La clase JavaLaunchHelper se implementa en ambos ... libinstrument.dylib. Uno de los dos será usado. Cuál es indefinido

274

Actualicé al último Java 7u40 en MacOS X y comencé a recibir el siguiente mensaje en la consola al iniciar mi aplicación usando Eclipse. La aplicación funciona bien, pero me gustaría averiguar la causa del problema y, con suerte, una solución.

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.

¿Alguien sabe por qué se imprime este mensaje y cómo solucionarlo?

ams
fuente
3
Si bien esta podría ser una opción viable para remediar este tipo específico de problema, esto podría hacerlo vulnerable a las fugas de seguridad solucionadas en u45 y más allá.
Matthias Wenz
55
Lo mismo está sucediendo con jdk1.8.0_05
neu242
28
Ha pasado un año y el error sigue molestando a todos los desarrolladores de Java que utilizan Mac (verificado con jdk1.7.0_67 en OS X 10.9.3). Vergonzoso. ¿Puede alguien con el inicio de sesión correspondiente por favor, vuelva a abrir estos errores bugs.java.com/bugdatabase/view_bug.do?bug_id=8021205~~V~~plural~~3rd y bugs.openjdk.java.net/browse/JDK-8025876
Tobia
8
El error todavía existe para jdk1.8.0_25. ¿Es solo un mensaje persistente o un problema real?
Churk
77
Un informe de error de este problema sugiere que se puede incluir una solución con la versión JDK9. El mismo informe de error dice esto: "Para aquellos que siguen preguntando sobre esto: el mensaje es benigno, no hay un impacto negativo de este problema ya que ambas copias de esa clase son idénticas (compiladas de la misma fuente). Es puramente un problema cosmético ".
Jordania

Respuestas:

176

⚠️ Para JetBrains IntelliJ IDEA : vaya a Help -> Edit Custom Properties.... Cree el archivo si le pide que lo cree. Para deshabilitar el mensaje de error, pegue lo siguiente en el archivo que creó:

idea_rt
idea.no.launcher=true

Esto surtirá efecto al reiniciar el IntelliJ.

Estoy en Eclipse IDE Versión: Photon Release (4.8.0) ID de compilación: 20180619-1200 con macOS 10.14.6 (Mojave). He añadido la línea idea.no.launcher=trueen <install location>/eclipse/configuration/config.iniy esto ha solucionado el problema para mí.

oxido
fuente
9
Trabajó para mí sin hacer nada más. Esto debe marcarse como correcto.
Trishulpani
77
Trabajó para mí en IDEA 2017.1.3 OSX 10.12.5 JRE 1.8
Daniel Rucci
2
El OP estaba usando Eclipse, no IntelliJ. Entonces, les está dando instrucciones para modificar la configuración en el editor incorrecto (por lo tanto, no está marcado como correcto).
Allison
2
Estoy de acuerdo con @Allison: si esta respuesta incluyera un medio para Eclipse, sería excelente. ¿Pero respondiendo por el IDE equivocado?
Daniel Soutar
1
Trabajó para IntelliJ 2018.3.3 CE, SDKMAN 5.7.3 + 337 y OpenJDK versión "1.8.0_131" (Zulu 8.21.0.1-macosx).
David Lukac
117

A partir de octubre de 2017, este problema ahora está resuelto en

cordero
fuente
44
Acabo de instalar la versión de Java "1.8.0_144", y me enfrenté al problema.
Reihan_amn
2
@Reihan_amn lo harás, hasta la construcción 152
muttonUp
1
Tuve problemas con jdk1.8.65 pero jdk1.8.152 solucionó este problema. Gracias
Anshul
20
  1. Instale Java 7u21 desde: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. Establezca estas variables:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
  3. Ejecuta tu aplicación y diviértete :)

gotoalberto
fuente
3
Funciona también para 1.8.0_92: # en .zshrc o .bashrc export JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_92.jdk / Contents / Home export PATH = $ JAVA_HOME / bin: $ PATH
BvuRVKyUVlViVIc7
@Lichtamberg agradece que esto haya solucionado mis problemas en Java 8 mac osx. He agregado su comentario como respuesta, ya que casi todas las otras respuestas funcionan, pero ahora son absolutas.
Pritesh Jain
1
@gotoalberto ¿Cómo resolverá el problema esta variable de entorno cuando tanto la implementación de JavaLaunchHelper reside en el directorio de inicio?
Prashant
1
@Lichtamberg Estoy usando el sonar runner para comenzar a evaluar la cobertura del código de mi aplicación. Todavía tengo el mismo problema con la versión que mencionaste anteriormente. aunque he probado muchas versiones 8 con sus parches en mis mac os. Sin suerte.
Sathish
NO HAGAS ESTO. Java 7u21 (además de ser lanzado en 2013 y haberse perdido cuatro años de parches grandes y pequeños) tiene una vulnerabilidad de ejecución de código arbitrario: gist.github.com/frohoff/24af7913611f8406eaf3
mseebach
11

Copie los comentarios de Pegar @ Lichtamberg a la respuesta de gotoalberto

Funciona también para 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 

Esto solucionó mi problema en Java 8.

Pritesh Jain
fuente
44
Sigo experimentando el problema en Android Studio (2.2p3) después de editar ~ / .zshrc y ~ / .bashrc
Mic Fok
no funciona para intellij, ¿hay un siguiente paso después de crear / editar estos archivos?
xpto
5

No estoy seguro de si esta es la causa del problema, pero obtuve este problema solo después de instalar JVM Monitor .

Desinstalar JVM Monitor me resolvió el problema.

paradita
fuente
Lo mismo aquí, JVM Monitor para Eclipse estaba causando el mensaje (JBoss 7.1, JDK 1.8.0.X).
psychowood
Comenzó para mí cuando instalé el complemento eclEmma en eclipse
Nooblhu
El mismo problema aqui. Monitor JVM desinstalado y esto ya no aparece
Zhiya
4

Como se detalla en otras respuestas, este es un error en el JDK (hasta u45) que se solucionará en JDK7u60; aunque esto aún no está disponible, puede descargar el b01 desde: https://jdk7.java.net/download. html

Es beta, pero solucionó ese problema para mí.

Matthias Wenz
fuente
11
Instalé u60 pero aún obtengo Class JavaLaunchHelper está implementado en /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java y /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents Inicio / jre / lib / libinstrument.dylib. Uno de los dos será usado. Cuál no está definido.
Rich Sadowsky
parece que fue reintroducido entre b01 y b02
npskirk
2
¿Alguna referencia al error? URL?
binarytemple_picsolve
3
En realidad no está arreglado todavía. Respaldaron la solución de u60
Zanson
2

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

Por lo que he encontrado en línea, este es un error introducido en JDK 1.7.0_45. He leído que se solucionará en la próxima versión de Java, pero aún no está disponible. Supuestamente, se solucionó en 1.7.0_60b01, pero no puedo encontrar dónde descargarlo y 1.7.0_60b02 reintroduce el error.

Logré solucionar el problema volviendo a JDK 1.7.0_25. Probablemente no sea la solución que deseabas, pero es la única forma en que he podido hacer que funcione. No olvide agregar JDK 1.7.0_25 en Eclipse después de instalar el JDK.

NO RESPONDA directamente a este correo electrónico, pero vaya a StackOverflow: la clase JavaLaunchHelper se implementa en ambos. Uno de los dos será usado. Cuál es indefinido

Vinod Joshi
fuente
1

Para resolver este problema, bajé a la versión JDK 1.7.0_21 . luego usé este pequeño script bash para cambiar la versión que uso.

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

Una vez que tenga el script bash en su archivo zshrc / bshrc, simplemente llame setJdk 1.7.0_21y estará listo.

guy.gc
fuente
0

Bueno, después de algunas dificultades, lo que funcionó para mí fue eliminar completamente el JDK actual, como se describe aquí :

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

Luego instaló 1.7.0_21, que fue descargado desde aquí .

Ahora java -versionsolicita:

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
fuente
0

Julio 2019

OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1 Community Edition. Funcionó configurando el archivo idea.properties. También configuré JAVA_HOME apuntando a /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/

propiedades personalizadas de IntelliJ IDEA

idea_rt idea.no.launcher = true

Joe V.
fuente
-2

Si está utilizando IntelliJ y Mac, simplemente vaya a Estructura del proyecto -> SDK y asegúrese de que haya Java en la lista, pero apunta a algo como

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

En lugar de usuario en casa ...

kboom
fuente
-3

jdk-7u80-macosx-x64.dmg corrige este problema.

wyxiloveu
fuente