La classe JavaLaunchHelper est implémentée à deux endroits

291

Aujourd'hui, j'ai mis à niveau mon Intellij Idea sur macOS Sierra, et maintenant, lorsque j'exécute des applications dans la console, j'ai cette erreur:

objc [3648]: la classe JavaLaunchHelper est implémentée dans /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10d19c4c0) et /Library/Java/JavaVirtualMachines/jdk1.8.0_121. Contenu / Accueil / jre / lib / libinstrument.dylib (0x10ea194e0). Un des deux sera utilisé. Lequel n'est pas défini.

Ess
la source

Réponses:

476

Vous pouvez trouver tous les détails ici:

  • IDEA-170117 "objc: classe JavaLaunchHelper est implémentée dans les deux ..." avertissement dans les consoles d'exécution

C'est l' ancien bogue de Java sur Mac qui a été déclenché par l'agent Java utilisé par l'IDE lors du démarrage de l'application. Ce message est inoffensif et peut être ignoré en toute sécurité. Commentaire du développeur Oracle:

Le message est bénin, il n'y a pas d'impact négatif de ce problème car les deux copies de cette classe sont identiques (compilées à partir de la même source exacte). C'est purement une question cosmétique.

Le problème est résolu dans Java 9 et dans la mise à jour 152 de Java 8 .

Si cela vous ennuie ou affecte vos applications de quelque manière que ce soit (cela ne devrait pas), la solution de contournement pour IntelliJ IDEA consiste à désactiver l' idea_rtagent de lancement en l'ajoutant idea.no.launcher=trueà idea.properties( Help| Edit Custom Properties...). La solution de contournement prendra effet au prochain redémarrage de l'EDI.

Cependant, je ne recommande pas de désactiver l'agent de lancement IntelliJ IDEA. Il est utilisé pour des fonctionnalités telles que l'arrêt gracieux (bouton Quitter), les vidages de threads, les solutions de contournement, un problème avec une ligne de commande trop longue dépassant les limites du système d'exploitation, etc. dépend de vous.

CrazyCoder
la source
6
Que fait idea_rt? Une raison de ne pas le désactiver?
TTT
8
Il fournit une sortie gracieuse, des vidages de threads, gère un long chemin de classe qui peut dépasser les limites du système d'exploitation, etc. Je ne le désactiverais pas, surtout juste pour cacher un message inoffensif.
CrazyCoder
16
J'ai installé Java 8 mise à jour 152 et cela résout le problème comme dans la réponse. Je vous remercie.
David Victor
3
Quand 152 sera-t-il poussé à travers Oracle Java SE?
Yogesh
1
Installé IntelliJ CE 2018.2, exécutant Java 8 mise à jour 191: le message est toujours là.
Massimiliano Kraus
180

Puisque "ce message est inoffensif" (voir la réponse de @ CrazyCoder ), une solution de contournement simple et sûre est que vous pouvez plier ce message bourdonnant dans la console par les paramètres IntelliJ IDEA:

  1. 【Préférences】 - 【Éditeur】 - 【Général】 - 【Console】 - 【Pliez les lignes de console qui contiennent】
    Bien sûr, vous pouvez utiliser 【Rechercher une action ...】 ( cmd+shift+Asur mac) et taper de Fold console lines that containmanière à naviguer plus efficacement.
  2. ajouter Class JavaLaunchHelper is implemented in both

image

Sur mon ordinateur, il s'avère: (LGTM: b)

image

Et vous pouvez déplier le message pour le vérifier à nouveau:

image

PS:

Depuis octobre 2017, ce problème est désormais résolu dans jdk1.9 / jdk1.8.152 / jdk1.7.161
pour plus d'informations, voir la réponse de @ muttonUp )

oldratlee
la source
13

J'utilise Intellij Idea 2017 et j'ai rencontré le même problème. Ce qui a résolu le problème pour moi, c'était simplement

  1. fermer le projet dans intelliJ
  2. Fichier -> Nouveau -> projet à partir des ressources existantes
  3. utiliser l'importation à partir d'un modèle externe (le cas échéant)
  4. ouvrez à nouveau le projet.
lnarasimhan
la source
5
la close then opensolution classique =))
Khoa
J'ai essayé toutes les solutions fournies comme réponses ici, mais seule cette solution a fonctionné pour moi. Je suggère de supprimer le .ideadossier avant de réimporter.
Rishabh
Cela n'a pas fonctionné pour moi dans IDEA 2017.3.1 sur macOS Sierra exécutant Java 8 mise à jour 151. Cependant, la mise à niveau vers 152 l'a corrigé après le redémarrage d'IDEA et la configuration de mon projet pour utiliser la mise à jour 152.
akubot
1

Cela m'est arrivé lorsque j'ai installé Intellij IDEA 2017, allez dans le menu Préférences -> Build, Execution, Deployment -> Debugger et désactivez l'option: "Force Classic VM for JDK 1.3.x and later". Cela fonctionne pour moi.

Danny Guo
la source
2
Vous devrez peut-être également désactiver l'agent de lancement idea_rt comme l'a mentionné CrazyCoder. ajout de idea.no.launcher = true dans idea.properties (Aide | Modifier les propriétés personnalisées ...). Assurez-vous de redémarrer IDE après cela.
Danny Guo
Oui, la solution de contournement des propriétés personnalisées fonctionne, votre suggestion ne fait rien sur mon système. Avez-vous essayé votre réponse, c'est-à-dire basculer le paramètre - je ne vois pas comment une option pré JDK 1.3.x peut avoir un effet? Je suis sur Java 8.
David Victor
Pour moi, j'ai essayé la propriété personnalisée au début, ça ne marche pas pour moi. alors j'ai trouvé cette solution JDK1.3.x désactivée. après redémarrage IDE, tout fonctionne bien.
Danny Guo
1
@DannyGuo car le problème est causé par n'importe quel agent Java et en mode débogage, l'agent Java est utilisé de toute façon pour les machines virtuelles Java modernes, cela a résolu le problème pour vous en mode débogage uniquement, mais vous aurez le problème en mode Exécution lorsque l'agent de lancement est activée.
CrazyCoder
0

J'ai trouvé l'autre solution: exclure libinstrument.dylibdu chemin du projet. Pour ce faire, allez dans Préférences -> Build, Execution and Deployment -> Compiler -> Excludes -> + et ajoutez ici le fichier par le chemin d'accès dans le message d'erreur.

gasabr
la source
0

C'était un problème pour moi il y a des années et je l'avais précédemment résolu dans Eclipse en excluant la 1.7 de mes projets, mais c'est redevenu un problème pour IntelliJ, que j'ai récemment installé. Je l'ai corrigé par:

  1. Désinstallation du JDK:

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

    (J'avais jdk1.8.0_45.jdkinstallé; vous devez évidemment désinstaller la version Java répertoriée dans ce dossier. Les fichiers incriminés se trouvent dans ce dossier et doivent être supprimés.)

  2. Téléchargement et installation de JDK 9 .

Notez que la prochaine fois que vous créerez un nouveau projet ou ouvrirez un projet existant, vous devrez définir le SDK du projet pour pointer vers la nouvelle installation JDK. Vous pouvez également toujours voir ce bogue ou le faire revenir si vous avez JDK 1.7 installé dans votre dossier JavaVirtualMachines (ce qui, je crois, m'est arrivé).

Allison
la source
0

Même erreur, je mets à jour mon Junitet le résout

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

à

org.junit.jupiter:junit-jupiter-api:5.0.0
Q.Lee
la source