Klasa JavaLaunchHelper jest zaimplementowana zarówno w… libinstrument.dylib. Jeden z dwóch będzie użyty. Który jest niezdefiniowany

274

Uaktualniłem do najnowszej wersji Java 7u40 na MacOS X i zacząłem otrzymywać następujący komunikat na konsoli podczas uruchamiania mojej aplikacji za pomocą Eclipse. Aplikacja działa dobrze, ale chciałbym znaleźć przyczynę problemu i mam nadzieję, że zostanie to naprawione.

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.

Czy ktoś wie, dlaczego ten komunikat jest drukowany i jak go naprawić?

ams
źródło
3
Chociaż może to być realna opcja rozwiązania tego konkretnego problemu - może to narazić Cię na wycieki bezpieczeństwa naprawione w U45 i późniejszych.
Matthias Wenz
5
To samo dzieje się z jdk1.8.0_05
neu242
28
Minął rok, a błąd wciąż dokucza każdemu programistowi Java, który akurat korzysta z komputera Mac (zweryfikowany przy pomocy jdk1.7.0_67 w OS X 10.9.3). Haniebny. Czy każdy z odpowiednim loginem może ponownie otworzyć te błędy bugs.java.com/bugdatabase/view_bug.do?bug_id=8021205 i bugs.openjdk.java.net/browse/JDK-8025876
Tobia
8
Błąd nadal występuje dla jdk1.8.0_25. Czy to tylko dokuczliwa wiadomość czy faktyczny problem?
Churk
7
Zgłoś błąd tej kwestii sugeruje poprawka może być zawarty w wydaniu JDK9. Ten sam raport o błędzie mówi: „Dla tych, którzy ciągle o to pytają: wiadomość jest łagodna, nie ma negatywnego wpływu tego problemu, ponieważ obie kopie tej klasy są identyczne (skompilowane z tego samego źródła). Jest to czysto problem kosmetyczny ”.
Jordan

Odpowiedzi:

176

⚠️ Dla JetBrains IntelliJ IDEA : Idź do Help -> Edit Custom Properties.... Utwórz plik, jeśli poprosi o jego utworzenie. Aby wyłączyć komunikat o błędzie, wklej następujący plik do utworzonego pliku:

idea_rt
idea.no.launcher=true

Będzie to miało wpływ na ponowne uruchomienie IntelliJ.

Jestem w wersji Eclipse IDE: Photon Release (4.8.0) ID kompilacji: 20180619-1200 z systemem macOS 10.14.6 (Mojave). I dodaje linię idea.no.launcher=truedo <install location>/eclipse/configuration/config.inii to rozwiązało problem dla mnie.

rdza
źródło
9
Pracował dla mnie, nie robiąc nic więcej. To powinno być oznaczone poprawnie.
trishulpani
7
Pracowałem dla mnie nad IDEA 2017.1.3 OSX 10.12.5 JRE 1.8
Daniel Rucci
2
OP używał Eclipse, a nie IntelliJ. Dajesz im więc instrukcje dotyczące modyfikowania ustawień w niewłaściwym edytorze (stąd nie jest oznaczony jako poprawny).
Allison
2
Zgadzam się z @Allison - jeśli ta odpowiedź zawiera środki dla Eclipse, byłoby doskonale. Ale odpowiadanie na złe IDE?
Daniel Soutar,
1
Pracował dla IntelliJ 2018.3.3 CE, SDKMAN 5.7.3 + 337 i wersji OpenJDK „1.8.0_131” (Zulu 8.21.0.1-macosx).
David Lukac,
117

Od października 2017 roku, ten problem jest teraz rozwiązane w

baranina
źródło
4
Właśnie zainstalowałem wersję Java „1.8.0_144” i napotkałem problem.
Reihan_amn
2
@Reihan_amn będziesz, aż do kompilacji 152
baranina do
1
Miałem problemy z jdk1.8.65, ale jdk1.8.152 naprawił ten problem. Dzięki
Anshul,
20
  1. Zainstaluj Javę 7u21 z: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. Ustaw następujące zmienne:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
    
  3. Uruchom aplikację i baw się dobrze :)

gotoalberto
źródło
3
Działa również dla 1.8.0_92: # w .zshrc lub .bashrc eksport JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_92.jdk / Contents / Home export PATH = $ JAVA_HOME / bin: $ PATH
BvuRVKyUVlViVIc7
@Lichtamberg dzięki to rozwiązało moje problemy z Java 8 mac osx. Dodałem twój komentarz jako odpowiedź, ponieważ prawie wszystkie inne odpowiedzi działają, ale teraz są absolutne.
Pritesh Jain
1
@gotoalberto W jaki sposób ta zmienna środowiskowa rozwiąże problem, gdy zarówno implementacja JavaLaunchHelper znajduje się w katalogu głównym?
Prashant,
1
@Lichtamberg Używam sonaru, aby rozpocząć ocenę zasięgu kodu mojej aplikacji. Nadal pojawia się ten sam problem z wersją, o której wspomniałeś powyżej. chociaż próbowałem wielu wersji 8 z łatkami w moim systemie Mac OS. Brak szczęścia.
Sathish
NIE RÓB TEGO. Java 7u21 (oprócz tego, że została wydana w 2013 r., A zatem przeoczyła cztery lata łatek dużych i małych) ma lukę w zabezpieczeniach polegającą na
mseebach
11

Skopiuj komentarze Pasting @ Lichtamberg do odpowiedzi gotoalberto

Działa również dla 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 

To naprawiło mój problem z java 8.

Pritesh Jain
źródło
4
Problem nadal występuje w Android Studio (2.2p3) po edycji ~ / .zshrc i ~ / .bashrc
Mic Fok
nie działa dla intellij, czy jest następny krok po utworzeniu / edycji tych plików?
xpto
5

Nie jestem pewien, czy to jest przyczyną problemu, ale dostałem ten problem dopiero po zainstalowaniu JVM Monitor .

Odinstalowanie JVM Monitor rozwiązało problem dla mnie.

paradite
źródło
To samo tutaj, JVM Monitor dla Eclipse powodował komunikat (JBoss 7.1, JDK 1.8.0.X).
psychowood
Zaczęło się dla mnie, gdy zainstalowałem wtyczkę eclEmma w środowisku eclipse
Nooblhu,
Mam ten sam problem. Odinstalowano monitor JVM i to już się nie wyświetla
Zhiya
4

Zgodnie z innymi szczegółami odpowiedzi, jest to błąd w JDK (do wersji U45), który zostanie naprawiony w JDK7u60 - chociaż nie jest jeszcze dostępny, możesz pobrać b01 ze strony: https://jdk7.java.net/download. HTML

Wersja beta, ale naprawiłem ten problem.

Matthias Wenz
źródło
11
Zainstalowałem u60, ale nadal otrzymuję Class JavaLaunchHelper jest zaimplementowany zarówno w /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java i /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/ Strona główna / jre / lib / libinstrument.dylib. Jeden z dwóch będzie użyty. Który jest niezdefiniowany.
Rich Sadowsky,
wygląda na to, że został ponownie wprowadzony między b01 a b02
npskirk
2
Wszelkie odniesienia do błędu? URL?
binarytemple_picsolve
3
W rzeczywistości nie jest jeszcze naprawiony. Poparli poprawkę u60
Zanson
2

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

Z tego, co znalazłem online, jest to błąd wprowadzony w JDK 1.7.0_45. Przeczytałem, że zostanie to naprawione w następnej wersji Javy, ale jeszcze jej nie ma. Podobno został naprawiony w wersji 1.7.0_60b01, ale nie mogę znaleźć skąd go pobrać, a 1.7.0_60b02 ponownie wprowadza błąd.

Udało mi się obejść ten problem, wracając do JDK 1.7.0_25. Prawdopodobnie nie takie rozwiązanie, jakie chciałeś, ale to jedyny sposób, w jaki udało mi się go uruchomić. Nie zapomnij dodać JDK 1.7.0_25 w Eclipse po zainstalowaniu JDK.

Proszę NIE ODPOWIADAĆ bezpośrednio na ten e-mail, ale przejść do StackOverflow: Klasa JavaLaunchHelper jest zaimplementowana w obu. Jeden z dwóch będzie użyty. Który jest niezdefiniowany

Vinod Joshi
źródło
1

Aby rozwiązać ten problem, obniżyłem wersję JDK do wersji 1.7.0_21 . potem użyłem tego małego skryptu bash, aby zmienić używaną wersję.

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

Kiedy już będziesz mieć skrypt bash w swoim pliku zshrc / bshrc, po prostu zadzwoń setJdk 1.7.0_21i możesz zacząć.

guy.gc
źródło
0

Cóż, po kilku zmaganiach, zadziałało dla mnie całkowicie usunięcie obecnego JDK, jak opisano tutaj :

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

Następnie zainstalowano 1.7.0_21, który został pobrany stąd .

Teraz java -versionmonituje:

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
źródło
0

Lipiec 2019 r

OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1 Community Edition. Udało się ustawienie pliku idea.properties. Skonfigurowałem również JAVA_HOME wskazując na /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/

niestandardowe właściwości IntelliJ IDEA

idea_rt idea.no.launcher = true

Joe V.
źródło
-2

Jeśli używasz IntelliJ i Mac, po prostu przejdź do Struktura projektu -> SDK i upewnij się, że jest na liście Java, ale wskazuje na coś takiego

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

Zamiast domu użytkownika ...

kboom
źródło
-3

jdk-7u80-macosx-x64.dmg napraw ten problem.

wyxiloveu
źródło