La classe JavaLaunchHelper est implémentée dans les deux… libinstrument.dylib. Un des deux sera utilisé. Lequel n'est pas défini

274

J'ai effectué la mise à niveau vers la dernière version de Java 7u40 sur MacOS X et j'ai commencé à recevoir le message suivant sur la console lors du lancement de mon application à l'aide d'Eclipse. L'application fonctionne bien, mais j'aimerais découvrir la cause du problème et, espérons-le, une solution.

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.

Quelqu'un sait-il pourquoi ce message est imprimé et comment le corriger?

ams
la source
3
Bien que cela puisse être une option viable pour remédier à ce type de problème spécifique - cela pourrait vous rendre vulnérable aux fuites de sécurité corrigées dans u45 et au-delà.
Matthias Wenz
5
La même chose se produit avec jdk1.8.0_05
neu242
28
Un an s'est écoulé et le bogue persiste à chaque développeur Java qui utilise un Mac (vérifié avec jdk1.7.0_67 sous OS X 10.9.3). Honteux. Toute personne disposant de la connexion appropriée peut-elle rouvrir ces bogues bugs.java.com/bugdatabase/view_bug.do?bug_id=8021205 et bugs.openjdk.java.net/browse/JDK-8025876
Tobia
8
Le bogue existe toujours pour jdk1.8.0_25. S'agit-il simplement d'un message lancinant ou d'un problème réel?
Churk
7
Un rapport de bogue de ce problème suggère qu'un correctif pourrait être inclus avec la version JDK9. Le même rapport de bogue dit ceci: "Pour ceux qui continuent à poser des questions à ce sujet: 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). problème cosmétique. "
Jordan

Réponses:

176

⚠️ Pour JetBrains IntelliJ IDEA : Allez à Help -> Edit Custom Properties.... Créez le fichier s'il vous demande de le créer. Pour désactiver le message d'erreur, collez ce qui suit dans le fichier que vous avez créé:

idea_rt
idea.no.launcher=true

Cela prendra effet au redémarrage de l'IntelliJ.

Je suis sur Eclipse IDE Version: Photon Release (4.8.0) Build ID: 20180619-1200 exécutant macOS 10.14.6 (Mojave). J'ai ajouté la ligne idea.no.launcher=truedans <install location>/eclipse/configuration/config.iniet cela a résolu le problème pour moi.

rouille
la source
9
A travaillé pour moi sans rien faire d'autre. Cela doit être marqué comme correct.
trishulpani
7
A travaillé pour moi sur IDEA 2017.1.3 OSX 10.12.5 JRE 1.8
Daniel Rucci
2
L'OP utilisait Eclipse, pas IntelliJ. Vous leur donnez donc des instructions pour modifier les paramètres dans le mauvais éditeur (il n'est donc pas marqué comme correct).
Allison
2
Je suis d'accord avec @Allison - si cette réponse incluait un moyen pour Eclipse, ce serait excellent. Mais répondre au mauvais IDE?
Daniel Soutar
1
A travaillé pour IntelliJ 2018.3.3 CE, SDKMAN 5.7.3 + 337 et OpenJDK version "1.8.0_131" (Zulu 8.21.0.1-macosx).
David Lukac
117

Depuis octobre 2017, ce problème est désormais résolu en

muttonUp
la source
4
Je viens d'installer la version java "1.8.0_144" et j'ai rencontré le problème.
Reihan_amn
2
@Reihan_amn, jusqu'à la version 152
muttonUp
1
J'ai eu des problèmes avec jdk1.8.65 mais jdk1.8.152 a résolu ce problème. Merci
Anshul
20
  1. Installez Java 7u21 à partir de: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. Définissez ces variables:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
  3. Exécutez votre application et amusez-vous :)

gotoalberto
la source
3
Fonctionne aussi pour 1.8.0_92: # en .zshrc ou .bashrc export JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_92.jdk / Contents / Home export PATH = $ JAVA_HOME / bin: $ PATH
BvuRVKyUVlViVIc7
@Lichtamberg merci d'avoir résolu mes problèmes sur Java 8 mac osx. J'ai ajouté votre commentaire comme réponse car presque toutes les autres réponses fonctionnent mais sont maintenant absolues.
Pritesh Jain
1
@gotoalberto Comment cette variable d'environnement résoudra-t-elle le problème lorsque l'implémentation de JavaLaunchHelper réside dans le répertoire Home?
Prashant
1
@Lichtamberg J'utilise sonar runner pour commencer à évaluer la couverture du code de mon application. Je reçois toujours le même problème avec la version que vous avez mentionnée ci-dessus. même si j'ai essayé de nombreuses versions 8 avec ses correctifs dans mon mac os. Pas de chance.
Sathish
NE FAITES PAS CELA. Java 7u21 (en plus d'être sorti en 2013 et d'avoir ainsi manqué quatre ans de correctifs, petits et grands) a une vulnérabilité d'exécution de code arbitraire: gist.github.com/frohoff/24af7913611f8406eaf3
mseebach
11

Copier les commentaires de Pasting @ Lichtamberg sur la réponse de gotoalberto

Fonctionne également pour 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 

Cela a résolu mon problème sur java 8.

Pritesh Jain
la source
4
Je rencontre toujours le problème dans Android Studio (2.2p3) après avoir modifié ~ / .zshrc et ~ / .bashrc
Mic Fok
ne fonctionne pas pour intellij, existe-t-il une étape suivante après la création / modification de ces fichiers?
2017
5

Je ne sais pas si c'est la cause du problème, mais je n'ai eu ce problème qu'après l'installation de JVM Monitor .

La désinstallation de JVM Monitor a résolu le problème pour moi.

paradis
la source
Même chose ici, JVM Monitor for Eclipse était à l'origine du message (JBoss 7.1, JDK 1.8.0.X).
psychowood
Cela a commencé pour moi lorsque j'ai installé le plugin eclEmma dans eclipse
Nooblhu
Même problème ici. Moniteur JVM non installé et cela n'apparaît plus
Zhiya
4

Comme d'autres réponses détaillent, il s'agit d'un bogue dans le JDK (jusqu'à u45) qui sera corrigé dans JDK7u60 - alors que ce n'est pas encore sorti, vous pouvez télécharger le b01 à partir de: https://jdk7.java.net/download. html

Il s'agit de la version bêta, mais j'ai résolu ce problème

Matthias Wenz
la source
11
J'ai installé u60 mais j'obtiens toujours la classe JavaLaunchHelper est implémentée dans /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java et /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/ Accueil / jre / lib / libinstrument.dylib. Un des deux sera utilisé. Lequel n'est pas défini.
Rich Sadowsky
semble avoir été réintroduit entre b01 et b02
npskirk
2
Une référence au bug? URL?
binarytemple_picsolve
3
Ce n'est pas encore fixe. Ils ont soutenu le correctif de u60
Zanson
2

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

D'après ce que j'ai trouvé en ligne, il s'agit d' un bogue introduit dans JDK 1.7.0_45. J'ai lu qu'il sera corrigé dans la prochaine version de Java, mais il n'est pas encore sorti. Soi-disant, il a été corrigé dans 1.7.0_60b01, mais je ne trouve pas où le télécharger et 1.7.0_60b02 réintroduit le bogue.

J'ai réussi à contourner le problème en revenant au JDK 1.7.0_25. Probablement pas la solution que vous vouliez, mais c'est la seule façon dont j'ai pu la faire fonctionner. N'oubliez pas d'ajouter JDK 1.7.0_25 dans Eclipse après avoir installé le JDK.

Veuillez NE PAS RÉPONDRE directement à cet e-mail mais allez à StackOverflow: la classe JavaLaunchHelper est implémentée dans les deux. Un des deux sera utilisé. Lequel n'est pas défini

Vinod Joshi
la source
1

Pour résoudre ce problème, j'ai rétrogradé vers la version 1.7.0_21 de JDK . puis j'ai utilisé ce petit script bash pour changer la version que j'utilise.

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

Une fois que vous avez le script bash dans votre fichier zshrc / bshrc, appelez simplement setJdk 1.7.0_21et vous êtes prêt à partir.

guy.gc
la source
0

Eh bien, après quelques difficultés, ce qui a fonctionné pour moi a été de supprimer complètement le JDK actuel, comme décrit ici :

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

Puis installé 1.7.0_21, qui a été téléchargé à partir d' ici .

java -versionInvite maintenant :

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
la source
0

Juillet 2019

OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1 Community Edition. Cela a fonctionné en définissant le fichier idea.properties. J'ai également configuré JAVA_HOME pointant vers /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/

propriétés IDEA IntelliJ personnalisées

idea_rt idea.no.launcher = true

Joe V.
la source
-2

Si vous utilisez IntelliJ et Mac, allez dans Structure du projet -> SDK et assurez-vous qu'il y a Java dans la liste, mais il pointe vers qch comme

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

Plutôt que la maison de l'utilisateur ...

kboom
la source
-3

jdk-7u80-macosx-x64.dmg corrige ce problème.

wyxiloveu
la source