¿Por qué tengo 3 versiones diferentes de Java en mi Mac?

1

hoy estaba cuidando mi versión de Java y me confundí mucho. Encontré tres diferentes:

  • Si busco en Webstorm usa: 1.6.0_65
  • Si hago una versión de java obtengo: 1.7.0_45
  • Si veo la configuración del sistema, obtengo: 1.8.0_45

¿Qué puedo hacer para tener una versión única de Java del sistema que será la versión que actualizaré a través de la configuración de mi sistema: 1.8.0_45?

    
pregunta gurehbgui 16.04.2015 - 12:54

2 respuestas

1

En algunos términos, esto es un malentendido, pero espero que se aclare pronto:

El JRE / JDK empaquetado de Apple siempre se instala en /System/Library/Frameworks/JavaVM.framework/Versions/Current , donde "Actual" es un enlace que apunta a la versión real. Por lo tanto, puede tener varias versiones instaladas y usar varias versiones en Xcode u otro IDE.

Oracle y sus instaladores instalan su JDK / JRE en /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home para el complemento del navegador web y el JRE / JDK completo en /Library/Java/JavaVirtualMachines/ .

Y, además, los paquetes de software pueden venir con su propio paquete JDK / JRE. Por ejemplo, HP Peregrine Service Center lo hace.

Entonces, cuando cada aplicación viene con su propio JDK / JRE, debe indicar en alguna configuración cuál usar. En general, para todas las aplicaciones controladas por shell hay una variable de entorno que usualmente configuras para esto y se llama JAVA_HOME. Software como Tomcat respeta esto.

Eche un vistazo más de cerca a esto:

endor-2:~ garex$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_45, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
    1.7.0_71, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home

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

Con el siguiente comando java_home cambias permanentemente a Java 1.8 64 bit:

endor-2:~ garex$ java -fullversion
java full version "1.7.0_71-b14"
endor-2:~ garex$ /usr/libexec/java_home -v 1.8 -d64
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
endor-2:~ garex$ which java
/usr/bin/java
endor-2:~ garex$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Pero recuerda: puedes hacer eso, pero no esperes que cierto software lo siga. En mi caso instalé JRE y JDK.

Al usar el comando java_home en el script de llamada, siempre puedes configurar la versión correcta para tu aplicación, por ejemplo

endor-2:~ garex$ /usr/libexec/java_home -v 1.8 -d64 -exec java -fullversion
java full version "1.8.0_45-b14"
endor-2:~ garex$ /usr/libexec/java_home -v 1.7.0 -d64 -exec java -fullversion
java full version "1.7.0_71-b14"

Para eliminar de forma permanente 1.7.x, lea enlace

    
respondido por el Garex 17.04.2015 - 09:20
1

Diferentes aplicaciones enlazarán a diferentes bibliotecas de Java. Lo más probable es que las aplicaciones más antiguas requieran Java 6 (1.6.0_65), mientras que las aplicaciones más nuevas se vincularán a las compilaciones más nuevas de Java, respectivamente.

A modo de ejemplo, sé que la aplicación Mobile Connect para mi antiguo módem 3G de Huawei requiere la instalación de Java 6, Adobe Photoshop CS6 requiere Java 7 (IIRC) y es probable que sus navegadores le soliciten que ejecute la última versión de Java. , que es Java 8.

    
respondido por el Stuart H 16.04.2015 - 21:56

Lea otras preguntas en las etiquetas