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

12

Sé que es posible tener múltiples 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

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 por defecto en todas las aplicaciones?

En victoria. Me puse en JAVA_HOMEel C:/ProgramFiles/Java/.…que puse en Ruta: ubicación JAVA_HOME/biny eso es todo.

Cris
fuente
1
Quizás sea interesante ya que Oracle recientemente usó el término JRE para describir solo el complemento de applet de 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 aplicaciones que no usan el complemento): ¿Cómo administrar mejor las diferentes versiones de Java en Mountain Lion?
Graham Perrin el

Respuestas:

3

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 pasadas 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$ 
Graham Perrin
fuente
14

Prefiriendo una versión de Java

Utilice 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 parecer un poco diferente.

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

Captura de pantalla de las preferencias de Java

Hay algunos lecturas de fondo sobre cómo funciona esto en el nivel de línea de comando. La herramienta de línea de comando java_home informa 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 conectarlo al sistema de preferencias:

export JAVA_HOME=`/usr/libexec/java_home`

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

  • / Sistema / Biblioteca / 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, solo es probable un camino .

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

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

Carlo
fuente
3

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.

Graham Perrin
fuente