Клас JavaLaunchHelper реалізований у двох місцях


291

Сьогодні я оновив свою Intellij Idea на macOS Sierra, і тепер, коли я запускаю програми в консолі, у мене є така помилка:

objc [3648]: Клас JavaLaunchHelper реалізований в /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10d19c4c0) та /Library/Java/JavaVirtualMachines/jdk1.8.8 Зміст / Головна / jre / lib / libinstrument.dylib (0x10ea194e0). Одне з двох буде використано. Який із них не визначений.

Відповіді:


476

Ви можете знайти всі деталі тут:

  • IDEA-170117 "objc: Клас JavaLaunchHelper реалізований в обох ..." Попередження на консолях запуску

Це стара помилка в Java на Mac, яку викликав агент Java, який використовувався IDE при запуску програми. Це повідомлення є нешкідливим і його безпечно ігнорувати. Коментар розробника Oracle:

Повідомлення є доброякісним, негативного впливу на цю проблему немає, оскільки обидві копії цього класу однакові (складені з того самого джерела). Це суто косметичне питання.

Проблема вирішена в Java 9 і в Java - 8 оновлень 152 .

Якщо це дратує вас або впливає на ваші програми будь-яким чином (це не повинно), вирішенням проблеми IntelliJ IDEA є відключення idea_rtагента запуску шляхом додавання idea.no.launcher=trueв idea.properties( Help| Edit Custom Properties...). Вирішення набирає чинності при наступному перезапуску IDE.

Я не рекомендую відключати агент запуску IntelliJ IDEA. Він використовується для таких функцій, як витончене вимкнення (кнопка «Вихід»), скидання потоків, вирішення проблеми із занадто довгим командним рядком, що перевищує обмеження ОС тощо. Втрачати ці функції лише задля приховування нешкідливого повідомлення, мабуть, не варто, але це до вас.


6
Що робить idea_rt? Будь-яка причина не відключити його?
TTT

8
Він забезпечує витончений вихід, скидання потоку, обробляє довгий класний шлях, який може перевищувати межі ОС тощо. Я б його не відключав, особливо лише з причини приховування нешкідливого повідомлення.
CrazyCoder

16
Я встановив Java 8 оновлення 152, і це вирішує питання, як у відповіді. Дякую.
Девід Віктор

3
Коли 152 буде просунуто через oracle java se?
Йогеш

1
Встановлено IntelliJ CE 2018.2, працює оновлення Java 8, оновлення 191: повідомлення все ще є.
Массіміліано Краус

180

Оскільки "це повідомлення є нешкідливим" (див . Відповідь @ CrazyCoder ), простий і безпечний спосіб вирішення полягає в тому, що ви можете скласти це гудне повідомлення в консоль за допомогою параметрів IntelliJ IDEA:

  1. 【Налаштування】 - 【Редактор】 - 【Загальне】 - 【Консоль】 - 【Складіть консольні лінії, що містять】
    Звичайно, ви можете використовувати 【Find Action ...】 ( cmd+shift+Aна mac) і вводити Fold console lines that containтак, щоб ефективніше переходити.
  2. додати Class JavaLaunchHelper is implemented in both

зображення

На моєму комп’ютері виявляється: (LGTM: b)

зображення

І ви можете розгорнути повідомлення, щоб перевірити його ще раз:

зображення

PS:

Станом на жовтень 2017 року це питання вирішено в jdk1.9 / jdk1.8.152 / jdk1.7.161
для отримання додаткової інформації, див . Відповідь @ muttonUp )


13

Я використовую Intellij Idea 2017, і я потрапив у ту ж проблему. Що вирішило проблему для мене, було просто

  1. закрити проект в IntelliJ
  2. Файл -> Новий -> проект із наявних ресурсів
  3. використовувати імпорт із зовнішньої моделі (за наявності)
  4. відкрити проект знову.

5
класичне close then openрішення =))
Хоа

Я намагався кожне рішення, яке тут було запропоновано як відповіді, але тільки це рішення працювало на мене. Я пропоную видалити .ideaпапку перед повторним імпортом.
Рішабх

Це не спрацювало для мене в IDEA 2017.3.1 на macOS Sierra під керуванням оновлення Java 8 151. Однак оновлення до 152 виправило це після перезавантаження IDEA та встановлення мого проекту для використання оновлення 152.
akubot

1

Це сталося зі мною, коли я встановив Intellij IDEA 2017, перейдіть до меню Налаштування -> Збірка, Виконання, Розгортання -> Налагоджувач і відключіть опцію: "Примусити Classic VM для JDK 1.3.x і новіших версій". Це працює для мене.


2
Вам може знадобитися також відключити агент запуску idea_rt, як згадував CrazyCoder. додавання idea.no.launcher = true у idea.properties (Довідка | Редагувати власні властивості ...). Переконайтесь, що після цього перезапустіть IDE.
Danny Guo

Так, вирішення спеціального властивості працює, ваша пропозиція нічого не робить у моїй системі. Ви пробували свою відповідь, тобто перемикайте налаштування - я не бачу, як попередній варіант JDK 1.3.x може мати якийсь ефект? Я на Java 8.
Девід Віктор

Для мене я спробував власні властивості на початку, це не працює для мене. тоді я знайшов це відключення JDK1.3.x рішення. після перезапуску IDE все працює добре.
Danny Guo

1
@DannyGuo, оскільки проблему викликає будь-який агент Java, а в режимі налагодження Java-агент використовується в будь-якому випадку для сучасних JVM, це вирішило проблему лише для вас в режимі налагодження, але ви будете мати проблему в режимі запуску, коли агентом запуску є увімкнено.
CrazyCoder

0

Я знайшов інше рішення: виключити libinstrument.dylibзі шляху проекту. Для цього перейдіть у розділ Налаштування -> Збірка, виконання та розгортання -> Компілятор -> Виключення -> + і сюди додайте файл шляхом шляхом у повідомленні про помилку.


0

Це було проблемою для мене років тому, і я раніше виправляв це в Eclipse, виключаючи 1,7 зі своїх проектів, але це знову стало проблемою для IntelliJ, яку я нещодавно встановив. Я це виправив:

  1. Видалення JDK:

    cd /Library/Java/JavaVirtualMachines
    sudo rm -rf jdk1.8.0_45.jdk

    jdk1.8.0_45.jdkвстановив; очевидно, вам слід видалити ту версію Java, яка вказана в цій папці. Файли, які ображають, розташовані в цій папці, і їх слід видалити.)

  2. Завантаження та встановлення JDK 9 .

Зауважте, що наступного разу, коли ви створюєте новий проект або відкриєте вже існуючий проект, вам потрібно буде встановити пакет SDK для проекту, який би вказував на нову установку JDK. Ви також можете все-таки побачити цю помилку або повернути її назад, якщо у вас папка JDK 1.7 встановлена ​​у вашій папці JavaVirtualMachines (що, на мою думку, сталося зі мною).


0

Та ж помилка, яку я модернізую Junitта усуваю

org.junit.jupiter:junit-jupiter-api:5.0.0-M6

до

org.junit.jupiter:junit-jupiter-api:5.0.0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.