Die Klasse JavaLaunchHelper ist in beiden… libinstrument.dylib implementiert. Einer der beiden wird verwendet. Welches ist undefiniert

274

Ich habe unter MacOS X auf das neueste Java 7u40 aktualisiert und beim Starten meiner Anwendung mit Eclipse die folgende Meldung auf der Konsole angezeigt . Die App funktioniert einwandfrei, aber ich möchte die Ursache des Problems herausfinden und hoffentlich eine Lösung dafür finden.

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.

Weiß jemand, warum diese Nachricht gedruckt wird und wie man sie behebt?

ams
quelle
3
Dies ist möglicherweise eine praktikable Option, um diese spezielle Art von Problem zu beheben. Dies kann Sie jedoch anfällig für Sicherheitslücken machen, die in u45 und darüber hinaus behoben wurden.
Matthias Wenz
5
Das gleiche passiert mit jdk1.8.0_05
neu242
28
Ein Jahr ist vergangen und der Fehler nervt immer noch jeden Java-Entwickler, der zufällig einen Mac verwendet (überprüft mit jdk1.7.0_67 unter OS X 10.9.3). Beschämend. Kann jemand mit dem entsprechenden Login bitte diese Bugs bugs.java.com/bugdatabase/view_bug.do?bug_id=8021205 und bugs.openjdk.java.net/browse/JDK-8025876
Tobia
8
Fehler für jdk1.8.0_25 besteht noch. Ist das nur eine quälende Nachricht oder ein tatsächliches Problem?
Churk
7
Ein Fehlerbericht zu diesem Problem deutet darauf hin, dass die JDK9-Version möglicherweise einen Fix enthält. In demselben Fehlerbericht heißt es: "Für diejenigen, die immer wieder danach fragen: Die Nachricht ist harmlos. Dieses Problem hat keine negativen Auswirkungen, da beide Kopien dieser Klasse identisch sind (aus genau derselben Quelle zusammengestellt). Es handelt sich lediglich um eine kosmetisches Problem. "
Jordanien

Antworten:

176

⚠️ Für JetBrains IntelliJ IDEA : Gehen Sie zu Help -> Edit Custom Properties.... Erstellen Sie die Datei, wenn Sie dazu aufgefordert werden. Um die Fehlermeldung zu deaktivieren, fügen Sie Folgendes in die von Ihnen erstellte Datei ein:

idea_rt
idea.no.launcher=true

Dies wird beim Neustart des IntelliJ wirksam.

Ich bin auf Eclipse IDE Version: Photon Release (4.8.0) Build ID: 20180619-1200 unter MacOS 10.14.6 (Mojave). Ich fügte hinzu , die Linie idea.no.launcher=truein <install location>/eclipse/configuration/config.iniund das Problem für mich gelöst.

Rost
quelle
9
Arbeitete für mich, ohne etwas anderes zu tun. Dies sollte korrekt markiert sein.
Trishulpani
7
Arbeitete für mich an IDEA 2017.1.3 OSX 10.12.5 JRE 1.8
Daniel Rucci
2
Das OP verwendete Eclipse, nicht IntelliJ. Sie geben ihnen also Anweisungen zum Ändern von Einstellungen im falschen Editor (daher wird er nicht als korrekt markiert).
Allison
2
Ich stimme @Allison zu - wenn diese Antwort ein Mittel für Eclipse enthalten würde, wäre es ausgezeichnet. Aber für die falsche IDE antworten?
Daniel Soutar
1
Arbeitete für IntelliJ 2018.3.3 CE, SDKMAN 5.7.3 + 337 und OpenJDK Version "1.8.0_131" (Zulu 8.21.0.1-macosx).
David Lukac
117

Ab Oktober 2017 wird dieses Problem nun gelöst in

HammelUp
quelle
4
Ich habe gerade die Java-Version "1.8.0_144" installiert und war mit dem Problem konfrontiert.
Reihan_amn
2
@Reihan_amn werden Sie, bis Build 152
HammelUp
1
Ich hatte Probleme mit jdk1.8.65, aber jdk1.8.152 hat dieses Problem behoben. Danke
Anshul
20
  1. Installieren Sie Java 7u21 von: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. Stellen Sie diese Variablen ein:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
  3. Starten Sie Ihre App und haben Sie Spaß :)

gotoalberto
quelle
3
Funktioniert auch für 1.8.0_92: # in .zshrc- oder .bashrc-Export JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_92.jdk / Contents / Home-Export PATH = $ JAVA_HOME / bin: $ PATH
BvuRVKyUVlViVIc7
@Lichtamberg danke dies hat meine Probleme auf Java 8 Mac OSX behoben. Ich habe Ihren Kommentar als Antwort hinzugefügt, da fast alle anderen Antworten funktionieren, aber jetzt absolut sind.
Pritesh Jain
1
@gotoalberto Wie wird diese Umgebungsvariable das Problem lösen, wenn sich beide Implementierungen von JavaLaunchHelper im Home-Verzeichnis befinden?
Prashant
1
@Lichtamberg Ich verwende Sonar Runner, um die Codeabdeckung meiner App zu bewerten. Ich habe immer noch das gleiche Problem mit der Version, die Sie oben erwähnt haben. obwohl ich viele 8 Versionen mit seinen Patches in meinem Mac OS ausprobiert habe. Kein Glück.
Sathish
MACH DAS NICHT. Java 7u21 (abgesehen davon, dass es 2013 veröffentlicht wurde und somit vier Jahre lang große und kleine Patches verpasst hat) weist eine Sicherheitsanfälligkeit bezüglich
mseebach
11

Kopieren Sie die Kommentare von Pasting @ Lichtamberg in die Antwort von gotoalberto

Funktioniert auch für 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 

Dies hat mein Problem auf Java 8 behoben.

Pritesh Jain
quelle
4
Nach dem Bearbeiten von ~ / .zshrc und ~ / .bashrc
Mic Fok am
funktioniert nicht für Intellij, gibt es einen nächsten Schritt nach dem Erstellen / Bearbeiten dieser Dateien?
xpto
5

Ich bin mir nicht sicher, ob dies die Ursache des Problems ist, aber ich habe dieses Problem erst nach der Installation von JVM Monitor erhalten .

Die Deinstallation von JVM Monitor hat das Problem für mich gelöst.

Paradit
quelle
Ebenso verursachte JVM Monitor for Eclipse die Nachricht (JBoss 7.1, JDK 1.8.0.X).
Psychowood
Es begann für mich, als ich eclEmma Plugin in Eclipse installiert habe
Nooblhu
Selbes Problem hier. Deinstallierter JVM-Monitor und dieser wird nicht mehr
angezeigt
4

Wie andere Antworten ausführlich beschreiben, handelt es sich um einen Fehler im JDK (bis zu u45), der in JDK7u60 behoben wird. Obwohl dies noch nicht bekannt ist, können Sie das b01 unter folgender Adresse herunterladen: https://jdk7.java.net/download. html

Es ist Beta, aber das Problem wurde für mich behoben.

Matthias Wenz
quelle
11
Ich habe u60 installiert, erhalte aber immer noch die Klasse JavaLaunchHelper ist sowohl in /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java als auch in /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/ implementiert Home / jre / lib / libinstrument.dylib. Einer der beiden wird verwendet. Welches ist undefiniert.
Rich Sadowsky
sieht aus wie es zwischen b01 und b02 wieder eingeführt wurde
npskirk
2
Irgendein Hinweis auf den Fehler? URL?
binarytemple_picsolve
3
Es ist eigentlich noch nicht behoben. Sie haben das Update von u60
Zanson
2

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

Nach dem, was ich online gefunden habe, ist dies ein Fehler , der in JDK 1.7.0_45 eingeführt wurde. Ich habe gelesen, dass es in der nächsten Version von Java behoben wird, aber es ist noch nicht erschienen. Angeblich wurde es in 1.7.0_60b01 behoben, aber ich kann nicht finden, wo ich es herunterladen kann, und 1.7.0_60b02 führt den Fehler erneut ein.

Ich habe es geschafft, das Problem zu umgehen, indem ich zu JDK 1.7.0_25 zurückgekehrt bin. Wahrscheinlich nicht die Lösung, die Sie wollten, aber nur so konnte ich sie zum Laufen bringen. Vergessen Sie nicht, nach der Installation des JDK JDK 1.7.0_25 in Eclipse hinzuzufügen.

Bitte antworten Sie NICHT direkt auf diese E-Mail, sondern gehen Sie zu StackOverflow: Die Klasse JavaLaunchHelper ist in beiden implementiert. Einer der beiden wird verwendet. Welches ist undefiniert

Vinod Joshi
quelle
1

Um dieses Problem zu beheben , habe ich ein Downgrade auf JDK Version 1.7.0_21 durchgeführt . Dann habe ich dieses kleine Bash-Skript verwendet, um die von mir verwendete Version zu ändern.

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:?;;")
 }

Sobald Sie das Bash-Skript in Ihrer zshrc / bshrc-Datei haben, rufen setJdk 1.7.0_21Sie einfach an und los geht's.

guy.gc
quelle
0

Nun, nach einigen Kämpfen hat es für mich funktioniert, das aktuelle JDK vollständig zu entfernen, wie hier beschrieben :

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

Dann installiert 1.7.0_21, die von hier heruntergeladen wurde .

Jetzt java -versionfordert:

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
quelle
0

Juli 2019

OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1 Community Edition. Es hat funktioniert, die Datei idea.properties festzulegen. Ich habe auch JAVA_HOME konfiguriert, das auf /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/ verweist.

benutzerdefinierte IntelliJ IDEA-Eigenschaften

idea_rt idea.no.launcher = true

Joe V.
quelle
-2

Wenn Sie IntelliJ & Mac verwenden, gehen Sie einfach zu Projektstruktur -> SDK und stellen Sie sicher, dass Java aufgelistet ist, aber es zeigt auf etw

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

Anstatt Benutzer zu Hause ...

kboom
quelle
-3

jdk-7u80-macosx-x64.dmg behebt dieses Problem.

wyxiloveu
quelle