La classe JavaLaunchHelper è implementata in due punti


291

Oggi ho aggiornato la mia idea Intellij su macOS Sierra e ora, quando eseguo app in console, ho questo errore:

objc [3648]: la classe JavaLaunchHelper è implementata in entrambi /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10d19c4c0) e /Library/Java/JavaVirtualMachines/jd_.8.8 Contenuti / Home / jre / lib / libinstrument.dylib (0x10ea194e0). Verrà utilizzato uno dei due. Quale non è definito.

Risposte:


476

Puoi trovare tutti i dettagli qui:

  • IDEA-170117 "objc: la classe JavaLaunchHelper è implementata in entrambi ..." avviso nelle console Run

È il vecchio bug di Java su Mac che è stato attivato dall'agente Java utilizzato dall'IDE all'avvio dell'app. Questo messaggio è innocuo ed è sicuro da ignorare. Commento dello sviluppatore Oracle:

Il messaggio è benigno, non vi è alcun impatto negativo da questo problema poiché entrambe le copie di quella classe sono identiche (compilate dalla stessa identica fonte). È puramente un problema estetico.

Il problema è stato risolto in Java 9 e nell'aggiornamento 152 di Java 8 .

Se ti infastidisce o influisce in qualche modo sulle tue app (non dovrebbe), la soluzione alternativa per IntelliJ IDEA è disabilitare l' idea_rtagente di avvio aggiungendo idea.no.launcher=truein idea.properties( Help| Edit Custom Properties...). La soluzione alternativa avrà effetto al successivo riavvio dell'IDE.

Tuttavia, non consiglio di disabilitare l'agente di avvio IDEA di IntelliJ. È usato per funzionalità come l'arresto graduale (pulsante Esci), i thread di dump, soluzioni alternative con una riga di comando troppo lunga che supera i limiti del sistema operativo, ecc. Perdere queste funzionalità solo per nascondere il messaggio innocuo probabilmente non ne vale la pena, ma è sta a te.


6
Cosa fa idea_rt? Qualche motivo per non disabilitarlo?
TTT,

8
Fornisce un'uscita graziosa, discariche di thread, gestisce percorsi di classe lunghi che possono superare i limiti del sistema operativo, ecc. Non lo disabiliterei, specialmente solo per il motivo di nascondere un messaggio innocuo.
CrazyCoder

16
Ho installato l'aggiornamento 8 di Java 8 e risolve il problema come nella risposta. Grazie.
David Victor,

3
Quando verrà spinto 152 nell'oracolo java se?
Yogesh,

1
IntelliJ CE 2018.2 installato, con Java 8 aggiornamento 191: il messaggio è ancora lì.
Massimiliano Kraus,

180

Poiché "questo messaggio è innocuo" (vedere la risposta di @ CrazyCoder ), una soluzione semplice e sicura è che puoi piegare questo messaggio di vibrazione nella console dalle impostazioni IDEA di IntelliJ:

  1. 【Preferenze】 - 【Editor】 - 【Generale】 - 【Console】 - 【Piega le righe della console che contengono】
    Naturalmente, puoi usare 【Trova azione ...】 ( cmd+shift+Asu Mac) e digitare in Fold console lines that containmodo da navigare in modo più efficace.
  2. Inserisci Class JavaLaunchHelper is implemented in both

Immagine

Sul mio computer, risulta: (LGTM: b)

Immagine

E puoi aprire il messaggio per ricontrollarlo:

Immagine

PS:

A partire da ottobre 2017, questo problema è ora risolto in jdk1.9 / jdk1.8.152 / jdk1.7.161
per ulteriori informazioni, vedere la risposta di @ muttonUp )


13

Sto usando Intellij Idea 2017 e ho avuto lo stesso problema. Ciò che ha risolto il problema per me è stato semplicemente

  1. chiudere il progetto in intelliJ
  2. File -> Nuovo -> progetto da risorse esistenti
  3. usa Importa da modello esterno (se presente)
  4. riapri il progetto.

5
la close then opensoluzione classica =))
Khoa,

Ho provato ogni soluzione fornita come risposta qui, ma solo questa soluzione ha funzionato per me. Suggerisco di eliminare la .ideacartella prima di reimportare.
Rishabh,

Questo non ha funzionato per me in IDEA 2017.3.1 su macOS Sierra con Java 8 aggiornamento 151. Tuttavia l'aggiornamento a 152 lo ha riparato dopo aver riavviato IDEA e impostato il mio progetto per utilizzare l'aggiornamento 152.
Akubot

1

Questo mi è successo quando ho installato Intellij IDEA 2017, vai al menu Preferenze -> Build, Execution, Deployment -> Debugger e disabilita l'opzione: "Force Classic VM per JDK 1.3.xe precedenti". Questo funziona per me.


2
Potrebbe essere necessario disabilitare anche l'agente di avvio idea_rt come menzionato CrazyCoder. aggiungendo idea.no.launcher = true in idea.properties (Aiuto | Modifica proprietà personalizzate ...). Assicurati di riavviare IDE dopo questo.
Danny Guo,

Sì, la soluzione alternativa personalizzata funziona, il tuo suggerimento non fa nulla sul mio sistema. Hai provato la tua risposta, ovvero attiva / disattiva l'impostazione: non vedo come un'opzione pre JDK 1.3.x possa avere alcun effetto? Sono su Java 8.
David Victor,

Per me, ho provato la proprietà personalizzata all'inizio, non funziona per me. poi ho trovato questa soluzione disabilita JDK1.3.x. dopo aver riavviato IDE, tutto funziona bene.
Danny Guo,

1
@DannyGuo poiché il problema è causato da qualsiasi agente Java e in modalità debug L'agente Java viene utilizzato comunque per le JVM moderne, questo ha risolto il problema solo in modalità Debug, ma avrai il problema in modalità Esegui quando l'agente di avvio è abilitato.
CrazyCoder,

0

Ho trovato l'altra soluzione alternativa: escludere libinstrument.dylibdal percorso del progetto. Per fare ciò, vai in Preferenze -> Build, Execution and Deployment -> Compiler -> Excludes -> + e qui aggiungi il file dal percorso nel messaggio di errore.


0

Questo è stato un problema per me anni fa e in precedenza l'avevo risolto in Eclipse escludendo 1.7 dai miei progetti, ma è diventato di nuovo un problema per IntelliJ, che ho installato di recente. L'ho risolto da:

  1. Disinstallazione di JDK:

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

    (Avevo jdk1.8.0_45.jdkinstallato; ovviamente dovresti disinstallare qualunque versione java sia elencata in quella cartella. I file offensivi si trovano in quella cartella e dovrebbero essere eliminati.)

  2. Download e installazione di JDK 9 .

Si noti che la prossima volta che si crea un nuovo progetto o si apre un progetto esistente, sarà necessario impostare l'SDK del progetto in modo che punti alla nuova installazione JDK. Potresti anche vedere ancora questo bug o farlo tornare indietro se hai JDK 1.7 installato nella tua cartella JavaVirtualMachines (che è quello che credo sia successo a me).


0

Stesso errore, aggiorno il mio Junite lo risolvo

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

per

org.junit.jupiter:junit-jupiter-api:5.0.0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.