6 votos

¿Por qué /usr/libexec/java_home no reconoce el JDK 1.8?

Estoy tratando de instalar un JDK 8 en OS X Mountain Lion (para experimentar con las nuevas características de lambda).

Punto de partida

Una máquina recientemente actualizada de OS X 10.6 a 10.8, con

$ sw_vers
  ProductName:    Mac OS X
  ProductVersion: 10.8.2
  BuildVersion:   12C60

$ ls -l /Library/Java/JavaVirtualMachines/
  Home@ -> jdk1.7.0_09.jdk/Contents/Home/
  jdk1.7.0_09.jdk/

$ ls -l /System/Library/Java/JavaVirtualMachines/
  1.6.0.jdk/

y esta carpeta de la época de OS X 10.6:

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

En ~/.bashrc he puesto

export JAVA_HOME=/Library/Java/JavaVirtualMachines/Home

Así que tengo

$ java -version
  java version "1.7.0_09"
  Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
  Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

$ /usr/libexec/java_home
  /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home

Cómo instalé el JDK 8

  1. Descargué el archivo .tar.gz de http://jdk8.java.net/lambda/ y lo desempaquetó en

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

    (He creado las carpetas jdk1.8.0.jdk/Contents/Home manualmente)

  2. Cambiado el enlace simbólico /Library/Java/JavaVirtualMachines/Home para apuntar a jdk1.8

Ahora tengo

$ java -version
  openjdk version "1.8.0-ea"
  OpenJDK Runtime Environment (build 1.8.0-ea-lambda-nightly-h2135-20121203-b67-b00)
  OpenJDK 64-Bit Server VM (build 25.0-b05, mixed mode)

$ echo $JAVA_HOME
  /Library/Java/JavaVirtualMachines/Home

$ ls /Library/Java/JavaVirtualMachines
  Home@ -> jdk1.8.0.jdk/Contents/Home/
  ...

Pero el java_home La utilidad no parece importarle:

$ /usr/libexec/java_home 
  /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home

Ni siquiera sabe que hay un JDK 8 disponible:

$ /usr/libexec/java_home -v 1.8*
  Unable to find any JVMs matching version "1.8*".

Pregunta

Me gustaría que el /usr/libexec/java_home para encontrar mis JDKs instalados, así que puedo usar algo como esto:

alias setjdk17='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7*)'
alias setjdk18='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8*)'

y deshacerse del Home symlink. ¿Alguien sabe

  • ¿Cómo puedo instalar correctamente el JDK 8?
  • cómo puedo hacer /usr/libexec/java_home ¿lo reconoces?

2voto

Rob Jeffries Puntos 26630

También tienes que copiar el directorio Contents/MacOS y el Info.plist del SDK 1.7 y adaptarlos (cambiando las cadenas de versión en él).

Entonces sí:

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
$ java -version
openjdk version "1.8.0-ea"
$ /usr/libexec/java_home -v 1.8*
/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home

Ten en cuenta que esto es un hack y que no he probado nada más que iniciar java... Solo me basé en tu consejo de crear el paquete.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X