Compatibilidad con varias versiones de Java en la ubicación de OS X y JAVA_HOME

Sé que es posible tener varias versiones de Java en OS X, pero me resulta difícil entender cómo funciona.

Actualicé a Mountain Lion y ahora echo $JAVA_HOMEestá vacío.

Sin embargo en/System/Library/Frameworks/JavaVM.framework/Versions/

1.4     1.5     1.6     A       CurrentJDK
1.4.2   1.5.0   1.6.0   Current

Cuando entro en 1.4.2 y ejecuto java - versiono./java -version

Entorno de tiempo de ejecución Java(TM) SE (compilación 1.6.0 _33-b03-424-11M3720)

Entonces, ¿por qué se usan todas esas versiones si tienen la misma versión de Java?

Luego descargué el JDK 7 de Oracle y lo instalé.

¿Dónde se suele instalar un nuevo JDK?

Y última pregunta: ¿Cómo puedo elegir qué versión debe ejecutarse de forma predeterminada en todas las aplicaciones?

En Ganar. Configuré JAVA_HOMEel C:/ProgramFiles/Java/.…que puse en Path: location to JAVA_HOME/biny eso es todo.

Tal vez de interés ya que Oracle recientemente usa el término JRE para describir solo el complemento del subprograma Java (¡confuso!); y dado que los usuarios de OS X ahora pueden usar dos versiones diferentes al mismo tiempo (una versión para el complemento, una versión diferente para las aplicaciones que no usan el complemento): ¿Cómo administrar mejor las diferentes versiones de Java en Mountain Lion?

Respuestas (4)

Contenido de /System/Library/Frameworks/JavaVM.framework/Versions

Para la mayoría de los casos de uso, CurrentJDKdebe proporcionar la funcionalidad de las versiones actuales y anteriores del JDK.

No todas las versiones anteriores, pero las versiones más comúnmente requeridas:

sh-3.2$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8
BuildVersion:   12A269
sh-3.2$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions
total 64
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 17 Jul 07:48 A
lrwxr-xr-x  1 root  wheel    1 17 Jul 07:47 Current -> A
lrwxr-xr-x  1 root  wheel   59 17 Jul 07:47 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
sh-3.2$ 

Preferir una versión de Java

Utilice las Preferencias de Java de la forma habitual.

Dependiendo de lo que haya instalado además de la distribución de Java de Apple, la primera pestaña de la utilidad puede aparecer un poco diferente.

Un ejemplo, sin las opciones familiares para applets y Java Web Start:

Captura de pantalla de las preferencias de Java

Hay algunas lecturas previas sobre cómo funciona esto en el nivel de la línea de comandos. La herramienta de línea de comandos java_home informa de esta configuración de preferencia.

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home

La aplicación de marcador de posición /usr/bin/java utiliza esta configuración para ejecutar la versión preferida de Java.

$ which java
/usr/bin/java

$ java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

Finalmente, al configurar JAVA_HOME en un script de inicio para Tomcat o Maven, puede conectarse al sistema de preferencias:

export JAVA_HOME=`/usr/libexec/java_home`

Las respuestas en otros lugares tienen en cuenta que Java puede instalarse en varias rutas: 

  • /Sistema/Biblioteca/Java/JavaVirtualMachines
  • /Biblioteca/Java/JavaVirtualMachines
  • ~/Library/Java/JavaVirtualMachines

– pero para lo que se describe actualmente en la pregunta aquí, el JDK de Oracle en Mountain Lion, solo es probable una ruta .

Gracias por la edición de la comunidad, ¿debería haber un enlace diferente para la lectura de fondo?
Las preferencias de Java ya no son compatibles y, de hecho, se eliminan cuando se aplica la actualización de Java 2012-006 . Esto es parte de la decisión de Apple de dejar de proporcionar y dar soporte a Java.
@BryanH gracias: esta respuesta se proporcionó algunos meses antes de Java para OS X 2012-006; consulte la pregunta vinculada. También tenga en cuenta que, si bien Apple se aleja de las distribuciones de JRE, no debemos suponer que Apple dejará de admitir Java.
Si gracias. Supongo que debo aclarar que "soporte" significa que Apple ya no brinda ni responde preguntas técnicas sobre la máquina virtual de Java para OSX. Depende de Oracle (u otro tercero) escribir y mantener dicha JVM.

Dado que Mac OS X 10.8.2 Build 12C60 Java Preferences ya no muestra las versiones anteriores.

Rutas utilizadas para la instalación de JDK

Correr:

ls -l /Library/Java/JavaVirtualMachines

Se pueden usar otras rutas, pero para el JDK actual de Oracle, instalado en Mountain Lion, probablemente encontrará el .jdkpaquete en esa ruta.