Класс JavaLaunchHelper реализован в обоих… libinstrument.dylib. Один из двух будет использован. Какой из них не определен

274

Я обновил Java 7u40 до последней версии на MacOS X и начал получать следующее сообщение на консоли при запуске моего приложения с использованием Eclipse. Приложение работает нормально, но я хотел бы выяснить причину проблемы и, надеюсь, исправить ее.

objc[10012]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.

Кто-нибудь знает почему печатается это сообщение и как это исправить?

военно-картографическая служба
источник
3
Хотя это может быть жизнеспособным вариантом для решения этой конкретной проблемы - это может сделать вас уязвимым для утечек в системе безопасности, исправленных в версии u45 и выше.
Матиас Венц
5
То же самое происходит с jdk1.8.0_05
neu242
28
Прошел год, и эта ошибка продолжает беспокоить каждого разработчика Java, который использует Mac (проверено с помощью jdk1.7.0_67 в OS X 10.9.3). Позорный. Может кто - нибудь с соответствующим логином , пожалуйста , возобновлять эти ошибки bugs.java.com/bugdatabase/view_bug.do?bug_id=8021205 и bugs.openjdk.java.net/browse/JDK-8025876
Тобия
8
Ошибка все еще существует для jdk1.8.0_25. Это просто ноющее сообщение или реальная проблема?
Чурк
7
Сообщение об ошибке этого вопроса предполагает исправление может быть включено с выходом JDK9. В том же отчете об ошибке говорится следующее: «Для тех, кто продолжает спрашивать об этом: сообщение является доброкачественным, от этой проблемы не будет отрицательного влияния, поскольку обе копии этого класса идентичны (скомпилированы из одного и того же источника). Это чисто косметическая проблема. "
Иордания

Ответы:

176

⚠️ Для JetBrains IntelliJ IDEA : перейдите по ссылке Help -> Edit Custom Properties.... Создайте файл, если он попросит вас его создать. Чтобы отключить сообщение об ошибке, вставьте следующее в файл, который вы создали:

idea_rt
idea.no.launcher=true

Это вступит в силу при перезапуске IntelliJ.

Я нахожусь на Eclipse IDE Версия: Photon Release (4.8.0) ID сборки: 20180619-1200 под управлением macOS 10.14.6 (Mojave). Я добавил строку idea.no.launcher=trueв, <install location>/eclipse/configuration/config.iniи это решило проблему для меня.

ржавчина
источник
9
Работал на меня, ничего не делая. Это должно быть помечено правильно.
Тришулпани
7
Работал для меня на IDEA 2017.1.3 OSX 10.12.5 JRE 1.8
Даниэль Руччи
2
ОП использовал Eclipse, а не IntelliJ. Таким образом, вы даете им инструкции по изменению настроек в неправильном редакторе (следовательно, он не помечен как правильный).
Эллисон
2
Я согласен с @Allison - если бы в этот ответ были включены средства для Eclipse, это было бы отлично. Но отвечая не на ту IDE?
Даниэль Соутар
1
Работал для IntelliJ 2018.3.3 CE, SDKMAN 5.7.3 + 337 и OpenJDK версии "1.8.0_131" (Zulu 8.21.0.1-macosx).
Дэвид Лукач
117

По состоянию на октябрь 2017 года эта проблема теперь решена в

muttonUp
источник
4
Я только что установил версию Java "1.8.0_144" и столкнулся с проблемой.
Reihan_amn
2
@Reihan_amn вы будете до сборки 152
баранина
1
У меня были проблемы с jdk1.8.65, но jdk1.8.152 устранил эту проблему. Спасибо
Anshul
20
  1. Установите Java 7u21 по адресу : http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. Установите эти переменные:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
  3. Запустите свое приложение и получайте удовольствие :)

gotoalberto
источник
3
Работает также для 1.8.0_92: # в .zshrc или .bashrc экспорт JAVA_HOME = / Библиотека / Java / JavaVirtualMachines / jdk1.8.0_92.jdk / Содержание / Домашний экспорт PATH = $ JAVA_HOME / bin: $ PATH
BvuRVKyUVlViVIc7
@Lichtamberg спасибо, это исправило мои проблемы с Java 8 Mac OSX. Я добавил ваш комментарий в качестве ответа, так как почти все остальные ответы работают, но теперь они абсолютные.
Притеш Джайн
1
@gotoalberto Как эта переменная среды решит проблему, когда обе реализации JavaLaunchHelper находятся в домашнем каталоге?
Прашант
1
@Lichtamberg Я использую гидролокатор сонара, чтобы начать оценку покрытия кода моего приложения. Я все еще получаю ту же проблему с версией, которую вы упомянули выше. хотя я попробовал много 8 версии с ее исправлениями в моем Mac OS. Не повезло.
Сатиш
НЕ ДЕЛАЙ ЭТОГО. Java 7u21 (помимо выпуска в 2013 году и, следовательно, пропускает четыре года патчей, больших и малых), имеет уязвимость, приводящую к
mseebach
11

Скопируйте Pasting @ Lichtamberg комментарии к ответу gotoalberto

Работает также для Java 1.8:

# in ~/.zshrc and ~/.bashrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home 
export PATH=$JAVA_HOME/bin:$PATH 

Это исправило мою проблему на Java 8.

Притеш Джайн
источник
4
Проблема по-прежнему возникает в Android Studio (2.2p3) после редактирования ~ / .zshrc и ~ / .bashrc
Мик Фок
не работает для intellij, есть ли следующий шаг после создания / редактирования этих файлов?
xpto
5

Не уверен, что это является причиной проблемы, но я получил эту проблему только после установки JVM Monitor .

Удаление JVM Monitor решило проблему для меня.

paradite
источник
То же самое здесь, JVM Monitor для Eclipse вызывал сообщение (JBoss 7.1, JDK 1.8.0.X).
psychowood
Это началось для меня, когда я установил плагин eclEmma в eclipse
Nooblhu
Та же проблема здесь. Удален монитор JVM, и он больше не отображается
Zhiya
4

Как подробно описано в других ответах, это ошибка в JDK (до u45), которая будет исправлена ​​в JDK7u60 - хотя это еще не сделано, вы можете скачать b01 по адресу : https://jdk7.java.net/download. HTML

Это бета, но исправил эту проблему для меня.

Матиас Венц
источник
11
Я установил u60, но все еще получаю, что класс JavaLaunchHelper реализован в обоих /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java и /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/ Главная / JRE / Библиотека / libinstrument.dylib. Один из двух будет использован. Какой из них не определен.
Рич Садовский
Похоже, что это было вновь введено между b01 и b02
npskirk
2
Любая ссылка на ошибку? URL?
binarytemple_picsolve
3
Это на самом деле не исправлено до сих пор. Они поддержали исправление u60
Зансон
2

https://groups.google.com/forum/#!topic/google-appengine-stackoverflow/QZGJg2tlfA4

Из того, что я нашел в Интернете, это ошибка, введенная в JDK 1.7.0_45. Я читал, что это будет исправлено в следующей версии Java, но это еще не вышло. Предположительно, это было исправлено в 1.7.0_60b01, но я не могу найти, где его скачать, и 1.7.0_60b02 повторно вводит ошибку.

Мне удалось обойти эту проблему, вернувшись к JDK 1.7.0_25. Возможно, не то решение, которое вы хотели, но только так я смог заставить его работать. Не забудьте добавить JDK 1.7.0_25 в Eclipse после установки JDK.

Пожалуйста, НЕ ОТВЕЧАЙТЕ прямо на это письмо, а перейдите к StackOverflow: класс JavaLaunchHelper реализован в обоих. Один из двух будет использован. Какой из них не определен

Винод Джоши
источник
1

Чтобы решить эту проблему, я опустился до версии 1.7.0_21 JDK . затем я использовал этот маленький скрипт bash, чтобы изменить версию, которую я использую.

function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=`/usr/libexec/java_home -v $@`
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }

 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }

Когда в вашем файле zshrc / bshrc есть скрипт bash, просто позвоните, setJdk 1.7.0_21и все готово .

guy.gc
источник
0

Что ж, после некоторой борьбы у меня сработало полное удаление текущего JDK, как описано здесь :

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist
sudo rm -rf /Library/PrivilegedHelperTools/com.oracle.java.JavaUpdateHelper
sudo rm -rf /Library/LaunchDaemons/com.oracle.java.JavaUpdateHelper.plist
sudo rm -rf /Library/Preferences/com.oracle.java.Helper-Tool.plist

Затем установил 1.7.0_21, который был скачан отсюда .

Теперь java -versionподсказывает:

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b12)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
demogar
источник
0

Июль 2019

OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1 Community Edition. Сработала настройка файла idea.properties. Я также настроил JAVA_HOME, указывая на /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/

пользовательские свойства IntelliJ IDEA

idea_rt idea.no.launcher = true

Джо В.
источник
-2

Если вы используете IntelliJ и Mac, просто зайдите в Структура проекта -> SDK и убедитесь, что в списке есть Java, но он указывает на что-то вроде

/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

Вместо домашнего пользователя ...

kboom
источник
-3

jdk-7u80-macosx-x64.dmg решает эту проблему.

wyxiloveu
источник