Klasa JavaLaunchHelper jest implementowana w dwóch miejscach

291

Dzisiaj zaktualizowałem mój Intellij Idea na macOS Sierra, a teraz, kiedy uruchamiam aplikacje w konsoli, mam ten błąd:

objc [3648]: Klasa JavaLaunchHelper jest zaimplementowana zarówno w /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10d19c4c0), jak i /Library/Java/JavaVirtualMachines/jdk1.8.0/121.jd Spis treści / Strona główna / jre / lib / libinstrument.dylib (0x10ea194e0). Jeden z dwóch będzie użyty. Który jest niezdefiniowany.

Es
źródło

Odpowiedzi:

476

Wszystkie szczegóły znajdziesz tutaj:

Jest to stary błąd w Javie na Macu, który został wywołany przez agenta Java używanego przez IDE podczas uruchamiania aplikacji. Ta wiadomość jest nieszkodliwa i można ją zignorować. Komentarz dewelopera Oracle:

Komunikat jest łagodny, nie ma negatywnego wpływu na ten problem, ponieważ obie kopie tej klasy są identyczne (skompilowane z tego samego źródła). Jest to kwestia czysto kosmetyczna.

Problem został rozwiązany w Javie 9 i Java 8 aktualizacji 152 .

Jeśli denerwuje Cię lub w jakikolwiek sposób wpływa na twoje aplikacje (nie powinno), obejściem dla IntelliJ IDEA jest wyłączenie idea_rtagenta uruchamiania przez dodanie idea.no.launcher=truedo idea.properties( Help| Edit Custom Properties...). To obejście zostanie zastosowane przy następnym ponownym uruchomieniu IDE.

Nie polecam jednak wyłączania agenta uruchamiania IntelliJ IDEA. Służy do takich funkcji, jak płynne zamykanie (przycisk Wyjdź), zrzuty wątków, obejścia problemu ze zbyt długą linią poleceń przekraczającą limity systemu operacyjnego itp. Utrata tych funkcji w celu ukrycia nieszkodliwego komunikatu prawdopodobnie nie jest tego warta, ale jest zależy od Ciebie.

CrazyCoder
źródło
6
Co robi idea_rt? Czy jest jakiś powód, aby tego nie wyłączać?
TTT
8
Zapewnia płynne wyjście, zrzuty wątków, obsługuje długą ścieżkę klas, która może przekraczać limity systemu operacyjnego itp. Nie wyłączałbym jej, szczególnie z powodu ukrywania nieszkodliwego komunikatu.
CrazyCoder,
16
Zainstalowałem aktualizację Java 8 152 i to rozwiązuje problem jak w odpowiedzi. Dziękuję Ci.
David Victor
3
Kiedy 152 zostanie przepchnięty przez Oracle Javea?
Yogesh,
1
Zainstalowano IntelliJ CE 2018.2, na którym uruchomiono aktualizację Java 8 191: komunikat jest nadal wyświetlany.
Massimiliano Kraus
180

Ponieważ „ta wiadomość jest nieszkodliwa” (patrz odpowiedź @ CrazyCoder ), prostym i bezpiecznym obejściem jest to, że możesz złożyć tę brzęczącą wiadomość w konsoli za pomocą ustawień IntelliJ IDEA:

  1. 【Preferencje】 - 【Edytor】 - 【Ogólne】 - 【Konsola】 - 【Złóż wiersze konsoli zawierające】
    Oczywiście możesz użyć 【Znajdź akcję ...】 ( cmd+shift+Ana komputerze Mac) i pisać Fold console lines that contain, aby nawigować bardziej efektywnie.
  2. Dodaj Class JavaLaunchHelper is implemented in both

wizerunek

Na moim komputerze okazuje się: (LGTM: b)

wizerunek

Możesz rozwinąć wiadomość, aby sprawdzić ją ponownie:

wizerunek

PS:

Od października 2017 r. Ten problem został rozwiązany w jdk1.9 / jdk1.8.152 / jdk1.7.161,
aby uzyskać więcej informacji, zobacz odpowiedź @ muttonUp )

oldratlee
źródło
13

Korzystam z Intellij Idea 2017 i mam ten sam problem. Tym, co rozwiązało problem, było po prostu

  1. zamknij projekt w intelliJ
  2. Plik -> Nowy -> projekt z istniejących zasobów
  3. użyj opcji Importuj z modelu zewnętrznego (jeśli istnieje)
  4. otwórz projekt ponownie.
lnarasimhan
źródło
5
klasyczne close then openrozwiązanie =))
Khoa
Próbowałem każdego rozwiązania podanego tutaj jako odpowiedzi, ale tylko to rozwiązanie działało dla mnie. Sugeruję usunięcie .ideafolderu przed ponownym importowaniem.
Rishabh,
Nie działało to dla mnie w IDEA 2017.3.1 na macOS Sierra z aktualizacją Java 8 151. Jednak aktualizacja do 152 naprawiła go po zrestartowaniu IDEA i ustawieniu mojego projektu do używania aktualizacji 152.
akubot
1

Zdarzyło mi się to, gdy zainstalowałem Intellij IDEA 2017, przejdź do menu Preferencje -> Kompilacja, wykonanie, wdrożenie -> Debugger i wyłącz opcję: „Force Classic VM for JDK 1.3.xi wcześniejszych”. To mi działa.

Danny Guo
źródło
2
Może być konieczne wyłączenie agenta uruchamiającego idea_rt, jak wspomniano w CrazyCoder. dodanie idea.no.launcher = true do idea.properties (Pomoc | Edycja właściwości niestandardowych ...). Po tym zrestartuj IDE.
Danny Guo,
Tak, obejście właściwości niestandardowej działa, twoja sugestia nie działa w moim systemie. Próbowałeś już odpowiedzieć, np. Zmienić ustawienie - nie widzę, jak opcja JDK 1.3.x może mieć jakikolwiek wpływ? Korzystam z Javy 8.
David Victor,
Dla mnie próbowałem niestandardowej właściwości na początku, to nie działa dla mnie. potem znalazłem to wyłączenie rozwiązania JDK1.3.x. po ponownym uruchomieniu IDE wszystko działa dobrze.
Danny Guo
1
@DannyGuo, ponieważ problem jest spowodowany przez dowolnego agenta Java, aw trybie debugowania Agent Java jest mimo to używany w nowoczesnych maszynach JVM, to rozwiązało problem tylko w trybie debugowania, ale problem będzie występować w trybie uruchamiania, gdy agentem uruchamiającym jest włączone.
CrazyCoder,
0

Znalazłem inne obejście: wykluczenie libinstrument.dylibze ścieżki projektu. Aby to zrobić, przejdź do Preferencji -> Kompilacja, wykonanie i wdrożenie -> Kompilator -> Wykluczenia -> + i tutaj dodaj plik według ścieżki w komunikacie o błędzie.

gasabr
źródło
0

Był to dla mnie problem lata temu i wcześniej go naprawiłem w Eclipse, wykluczając 1.7 z moich projektów, ale znów stał się problemem dla IntelliJ, który niedawno zainstalowałem. Naprawiłem to przez:

  1. Odinstalowywanie JDK:

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

    ( jdk1.8.0_45.jdkZainstalowałem; oczywiście należy odinstalować dowolną wersję java wymienioną w tym folderze. Obraźliwe pliki znajdują się w tym folderze i powinny zostać usunięte).

  2. Pobieranie i instalowanie JDK 9 .

Pamiętaj, że następnym razem, gdy utworzysz nowy projekt lub otworzysz istniejący projekt, musisz ustawić zestaw SDK projektu, aby wskazywał na nową instalację JDK. Możesz również zobaczyć ten błąd lub cofnąć się, jeśli JDK 1.7 jest zainstalowany w folderze JavaVirtualMachines (co, jak sądzę, mi się przydarzyło).

Allison
źródło
0

Ten sam błąd, aktualizuję mój Juniti rozwiązuję go

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

do

org.junit.jupiter:junit-jupiter-api:5.0.0
Pytanie
źródło