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ć?


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.


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,


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 :)


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.


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.


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.


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


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ąć.


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)

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


-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 ...


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.