(No estaba seguro de si esto debería continuar en SU ... la migración es ciertamente una opción, pero más programadores leen preguntas aquí, así que aquí va).
Estoy ejecutando Mac OS X 10.8.4 y tengo instalado el JDK 1.6.0_51 de Apple y el JDK 1.7.0_25 de Oracle. Recientemente instalé JDK de vista previa 1.8 de Oracle para algún software de versión preliminar que lo requiere. Ahora, cuando ejecuto / usr / libexec / java_home, obtengo esto:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
1.7.0_25, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
1.6.0_51-b11-457, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_51-b11-457, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Excelente.
Sin embargo, ejecutando:
$ java -version
Devoluciones:
java version "1.8.0-ea"
Eso significa que la versión predeterminada de Java es actualmente la versión preliminar, que rompe algunos paquetes "normales" (en mi caso, VisualVM).
No puedo configurarlo JAVA_HOME
porque la ejecución de aplicaciones ignora las variables de entorno, incluso cuando se inicia desde la línea de comandos (p $ open /Applications/VisualVM.app
.
Entonces, ¿hay un archivo que pueda editar donde pueda establecer mis preferencias de pedido de JVM globalmente ?
(Por favor, no me diga que inicie el Panel de preferencias de Java porque eso simplemente no funciona: no contiene nada útil y solo enumera una de las 4 JVM que he instalado).
Actualización :
Las JVM de Oracle viven en /Library/Java/JavaVirtualMachines
. jdk1.8.0.jvm.xyz
Cambiar el nombre del directorio JDK 1.8 a no cambia nada: java_home
aún lo encuentra en el lugar correcto, y ejecutar / usr / bin / java aún ejecuta la JVM 1.8. Esto no es un problema con los enlaces sincronizados, etc.
Respuestas a preguntas similares
Si bien esta respuesta ofrece lo que equivale a un truco que eliminará las versiones de Java para que java_home no las recoja, todavía no responde a esta pregunta de cómo java_home elige su valor predeterminado y si los usuarios pueden configurarlo de forma no destructiva .
/usr/bin/java
apunta a /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
. El Versions
directorio no contiene un enlace simbólico al 1.8.0 JDK. En su lugar, contiene un directorio llamado A
que Current
apunta a. A
no es un "JAVA_HOME. Tiene un subdirectorio llamado Commands
que tiene un java
comando, pero es un binario universal opaco que hace quién sabe qué. Sospecho que usa java_home
, etc. para decidir qué JVM usar.
/usr/bin/java
es solo un enlace simbólico