Admite múltiples versiones de Java en la ubicación de OS X y JAVA_HOME

12

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_HOME está 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 - version o ./java -version

  

Java (TM) SE Runtime Environment (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 suele instalarse un nuevo JDK?

Y última pregunta: ¿Cómo puedo elegir qué versión debería ejecutarse de forma predeterminada para todas las aplicaciones?

En Win. Establecí JAVA_HOME a C:/ProgramFiles/Java/.… Puse en Path: location to JAVA_HOME/bin y eso es todo.

    
pregunta Cris 27.07.2012 - 21:52

4 respuestas

3

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

Para la mayoría de los casos de uso, CurrentJDK debería proporcionar la funcionalidad de las versiones anteriores y 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$ 
    
respondido por el Graham Perrin 31.07.2012 - 00:49
14

Prefiriendo una versión de Java

Usa las Preferencias de Java de la manera normal.

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:

Hayalgunos lectura de fondo sobre cómo funciona esto en el nivel de línea de comando. La herramienta de línea de comandos java_home informa sobre 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 hace uso de estas configuraciones 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 lanzamiento 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 -

  • / System / Library / Java / JavaVirtualMachines
  • / Library / Java / JavaVirtualMachines
  • ~ / Library / Java / JavaVirtualMachines

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

    
respondido por el Graham Perrin 31.07.2012 - 00:53
5

Desde Mac OS X 10.8.2 Build 12C60 Las Preferencias de Java ya no muestran las versiones anteriores.

    
respondido por el Carlo 22.01.2013 - 11:58
3

Rutas utilizadas para la instalación de JDK

Ejecutar:

ls -l /Library/Java/JavaVirtualMachines

Se pueden usar otras rutas, pero para el JDK actual de Oracle, instalado en Mountain Lion, es probable que encuentre el paquete .jdk en esa ruta.

    
respondido por el Graham Perrin 31.07.2012 - 00:43

Lea otras preguntas en las etiquetas