Die Klasse JavaLaunchHelper ist an zwei Stellen implementiert


291

Heute habe ich meine Intellij Idea unter macOS Sierra aktualisiert. Wenn ich jetzt Apps in der Konsole ausführe, tritt folgender Fehler auf:

objc [3648]: Die Klasse JavaLaunchHelper ist sowohl in /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10d19c4c0) als auch in /Library/Java/JavaVirtualMachines/jdk1.8.0_12 implementiert. Inhalt / Home / jre / lib / libinstrument.dylib (0x10ea194e0). Einer der beiden wird verwendet. Welches ist undefiniert.

Antworten:


476

Alle Details finden Sie hier:

  • IDEA-170117 Warnung "objc: Klasse JavaLaunchHelper ist in beiden implementiert ..." in Run Consoles

Es ist der alte Fehler in Java auf dem Mac, der durch den Java Agent ausgelöst wurde, der von der IDE beim Starten der App verwendet wird. Diese Nachricht ist harmlos und kann ignoriert werden. Kommentar des Oracle-Entwicklers:

Die Nachricht ist harmlos. Dieses Problem hat keine negativen Auswirkungen, da beide Kopien dieser Klasse identisch sind (aus genau derselben Quelle zusammengestellt). Es ist ein rein kosmetisches Problem.

Das Problem wurde in Java 9 und in Java 8 Update 152 behoben .

Wenn es Sie stört oder Ihre Apps in irgendeiner Weise beeinflusst (sollte es nicht), besteht die Problemumgehung für IntelliJ IDEA darin, den idea_rtLauncher-Agenten durch Hinzufügen idea.no.launcher=truezu idea.properties( Help| Edit Custom Properties...) zu deaktivieren . Die Problemumgehung wird beim nächsten Neustart der IDE wirksam.

Ich empfehle jedoch nicht, den IntelliJ IDEA Launcher Agent zu deaktivieren. Es wird für Funktionen wie das ordnungsgemäße Herunterfahren (Schaltfläche "Beenden"), Thread-Dumps, Problemumgehungen, ein Problem mit zu langen Befehlszeilen, die die Betriebssystemgrenzen überschreiten, usw. verwendet. Der Verlust dieser Funktionen, nur um die harmlose Nachricht zu verbergen, ist es wahrscheinlich nicht wert, aber es lohnt sich wie du willst.


6
Was macht idea_rt? Gibt es einen Grund, es nicht zu deaktivieren?
TTT

8
Es bietet einen ordnungsgemäßen Exit, Thread-Dumps, lange Klassenpfade, die die Betriebssystemgrenzen überschreiten können usw. Ich würde es nicht deaktivieren, insbesondere nur, um eine harmlose Nachricht auszublenden.
CrazyCoder

16
Ich habe Java 8 Update 152 installiert und es behebt das Problem wie in der Antwort. Danke dir.
David Victor

3
Wann wird 152 durch Orakel Java Se geschoben?
Yogesh

1
Installierte IntelliJ CE 2018.2 mit Java 8 Update 191: Die Nachricht ist noch vorhanden.
Massimiliano Kraus

180

Da „diese Nachricht harmlos ist“ (siehe die Antwort von @ CrazyCoder ), besteht eine einfache und sichere Problemumgehung darin, dass Sie diese summende Nachricht mithilfe der IntelliJ IDEA-Einstellungen in der Konsole falten können:

  1. 【Einstellungen】 - 【Editor】 - 【Allgemein】 - 【Konsole】 - 【Konsolenzeilen falten, die】 enthalten.
    Natürlich können Sie 【Aktion suchen ...】 ( cmd+shift+Aauf Mac) verwenden und Fold console lines that containeingeben, um effektiver zu navigieren.
  2. hinzufügen Class JavaLaunchHelper is implemented in both

Bild

Auf meinem Computer stellt sich heraus: (LGTM: b)

Bild

Und Sie können die Nachricht entfalten, um sie erneut zu überprüfen:

Bild

PS:

Ab Oktober 2017 wird dieses Problem nun gelöst in jdk1.9 / jdk1.8.152 / jdk1.7.161
für weitere Informationen finden Sie die @ muttonUp Antwort )


13

Ich verwende Intellij Idea 2017 und bin auf das gleiche Problem gestoßen. Was das Problem für mich löste, war einfach

  1. Schließen Sie das Projekt in IntelliJ
  2. Datei -> Neu -> Projekt aus vorhandenen Ressourcen
  3. Verwenden Sie den Import aus einem externen Modell (falls vorhanden).
  4. Öffnen Sie das Projekt erneut.

5
die klassische close then openLösung =))
Khoa

Ich habe jede Lösung ausprobiert, die hier als Antwort angegeben wurde, aber nur diese Lösung hat für mich funktioniert. Ich empfehle, den .ideaOrdner vor dem erneuten Import zu löschen .
Rishabh

Dies funktionierte nicht für mich in IDEA 2017.3.1 unter macOS Sierra mit Java 8 Update 151. Ein Upgrade auf 152 behebt es jedoch nach dem Neustart von IDEA und der Einstellung meines Projekts zur Verwendung von Update 152.
akubot

1

Dies ist mir bei der Installation von Intellij IDEA 2017 passiert. Gehen Sie zu Menü Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Debugger und deaktivieren Sie die Option "Klassische VM für JDK 1.3.x und früher erzwingen". Das funktioniert bei mir.


2
Möglicherweise müssen Sie auch den Launcher-Agenten von idea_rt deaktivieren, wie von CrazyCoder erwähnt. Hinzufügen von idea.no.launcher = true zu idea.properties (Hilfe | Benutzerdefinierte Eigenschaften bearbeiten ...). Stellen Sie sicher, dass IDE danach neu gestartet wird.
Danny Guo

Ja, die Problemumgehung für benutzerdefinierte Eigenschaften funktioniert. Ihr Vorschlag hat auf meinem System keine Auswirkungen. Haben Sie Ihre Antwort versucht, dh die Einstellung umgeschaltet - ich sehe nicht, wie eine Option vor JDK 1.3.x Auswirkungen haben kann? Ich bin auf Java 8.
David Victor

Für mich habe ich am Anfang eine benutzerdefinierte Eigenschaft ausprobiert, die bei mir nicht funktioniert. dann fand ich diese deaktivierende JDK1.3.x-Lösung. Nach dem Neustart der IDE funktioniert alles einwandfrei.
Danny Guo

1
@DannyGuo Da das Problem von einem Java-Agenten verursacht wird und im Debug-Modus der Java-Agent ohnehin für moderne JVMs verwendet wird, wurde das Problem nur im Debug-Modus für Sie behoben. Das Problem tritt jedoch im Run-Modus auf, wenn sich der Launcher-Agent befindet aktiviert.
CrazyCoder

0

Ich habe die andere Problemumgehung gefunden: Ausschließen libinstrument.dylibvom Projektpfad. Gehen Sie dazu zu Einstellungen -> Erstellen, Ausführen und Bereitstellen -> Compiler -> Ausschließen -> + und fügen Sie hier die Datei über den Pfad in der Fehlermeldung hinzu.


0

Dies war vor Jahren ein Problem für mich und ich hatte es zuvor in Eclipse behoben, indem ich 1.7 aus meinen Projekten ausgeschlossen hatte, aber es wurde wieder ein Problem für IntelliJ, das ich kürzlich installiert habe. Ich habe es behoben durch:

  1. JDK deinstallieren:

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

    (Ich hatte jdk1.8.0_45.jdkinstalliert; natürlich sollten Sie die Java-Version deinstallieren, die in diesem Ordner aufgeführt ist. Die fehlerhaften Dateien befinden sich in diesem Ordner und sollten gelöscht werden.)

  2. JDK 9 herunterladen und installieren .

Beachten Sie, dass Sie beim nächsten Erstellen eines neuen Projekts oder Öffnen eines vorhandenen Projekts das Projekt-SDK so einstellen müssen, dass es auf die neue JDK-Installation verweist. Möglicherweise wird dieser Fehler auch weiterhin angezeigt oder er wird zurückgeschlichen, wenn JDK 1.7 in Ihrem JavaVirtualMachines-Ordner installiert ist (was meiner Meinung nach mir passiert ist).


0

Gleicher Fehler, ich aktualisiere mein Junitund behebe es

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

zu

org.junit.jupiter:junit-jupiter-api:5.0.0
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.