Класс 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/jdkd.8.0_12 Contents / Home / jre / lib / libinstrument.dylib (0x10ea194e0). Один из двух будет использован. Какой из них не определен.

Ess
источник

Ответы:

476

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

Это старая ошибка в 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. Он используется для таких функций, как постепенное завершение работы (кнопка «Выход»), дампы потоков, обходные пути, проблема с слишком длинной командной строкой, превышающей пределы ОС и т. Д. Потеря этих функций только ради сокрытия безвредного сообщения, вероятно, не стоит того, но вам решать.

CrazyCoder
источник
6
Что делает idea_rt? Есть ли причина не отключать его?
TTT
8
Он обеспечивает плавный выход, дампы потоков, обрабатывает длинный путь к классам, который может превышать пределы ОС и т. Д. Я бы не стал его отключать, особенно по причине сокрытия безобидного сообщения.
CrazyCoder
16
Я установил Java 8 обновление 152, и это решает проблему, как в ответе. Спасибо.
Дэвид Виктор
3
Когда 152 будет проталкиваться через оракула Java?
Йогеш,
1
Установлен IntelliJ CE 2018.2, запущено обновление Java 8 191: сообщение все еще там.
Массимилиано Краус
180

Поскольку «это сообщение безвредно» (см . Ответ @ CrazyCoder ), простой и безопасный обходной путь заключается в том, что вы можете сложить это жужжание в консоли с помощью настроек IntelliJ IDEA:

  1. 【Предпочтения】 - 【Редактор】 - 【Общие сведения】 - 【Консоль】 - 【Сложите строки консоли, содержащие】
    Конечно, вы можете использовать 【Найти действие ...】 ( 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 )

oldratlee
источник
13

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

  1. закрыть проект в IntelliJ
  2. Файл -> Новый -> проект из существующих ресурсов
  3. использовать импорт из внешней модели (если есть)
  4. откройте проект снова.
lnarasimhan
источник
5
классическое close then openрешение =))
Khoa
Я попробовал каждое решение, предоставленное здесь как ответы, но только это решение работало для меня. Я предлагаю удалить .ideaпапку перед повторным импортом.
Rishabh
Это не сработало для меня в IDEA 2017.3.1 на macOS Sierra под управлением Java 8 с обновлением 151. Однако обновление до 152 исправило его после перезапуска IDEA и настройки моего проекта на использование обновления 152.
akubot
1

Это случилось со мной, когда я установил Intellij IDEA 2017, зашел в меню «Настройки» -> «Сборка, выполнение, развертывание -> отладчик» и отключил опцию «Force Classic VM для JDK 1.3.x и более ранних версий». Это работает для меня.

Дэнни Го
источник
2
Вам также может понадобиться отключить агент запуска idea_rt, как упомянул CrazyCoder. добавление idea.no.launcher = true в idea.properties (Справка | Изменить пользовательские свойства ...). Убедитесь, что перезапустите IDE после этого.
Дэнни Го
Да, обходной путь к пользовательскому свойству работает, ваше предложение не работает в моей системе. Вы пробовали свой ответ, т. Е. Переключали настройку - я не понимаю, как опция pre JDK 1.3.x может иметь какой-либо эффект? Я на Java 8.
Дэвид Виктор
Для меня я попробовал пользовательское свойство в начале, у меня это не работает. Затем я нашел это решение отключить JDK1.3.x. после перезагрузки IDE все работает нормально.
Дэнни Го,
1
@DannyGuo, поскольку проблема вызвана любым агентом Java, и в режиме отладки агент Java в любом случае используется для современных JVM, это исправило проблему только для вас в режиме отладки, но у вас будет проблема в режиме выполнения, когда агент запуска включен.
CrazyCoder
0

Я нашел другой обходной путь: исключить libinstrument.dylibиз пути проекта. Для этого перейдите в « Настройки» -> « Сборка, выполнение и развертывание» -> « Компилятор» -> « Исключения» -> + и добавьте файл по пути в сообщении об ошибке.

gasabr
источник
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 (что, как я полагаю, случилось со мной).

Allison
источник
0

Та же ошибка, я обновляю свою Junitи исправляю ее

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

в

org.junit.jupiter:junit-jupiter-api:5.0.0
Q.Lee
источник