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

5

Estoy intentando instalar un JDK 8 en OS X Mountain Lion (para experimentar con las nuevas funciones 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 era OS X 10.6:

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

En ~ / .bashrc he establecido

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é JDK 8

  1. Descargué el archivo .tar.gz de enlace y lo descomprimimos en

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

    (Creé las carpetas jdk1.8.0.jdk/Contents/Home manualmente)

  2. Se modificó 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 a la utilidad java_home 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 la utilidad /usr/libexec/java_home encuentre mis JDK instalados, por lo 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 enlace simbólico Home . ¿Alguien sabe

  • ¿Cómo puedo instalar correctamente JDK 8?
  • ¿Cómo puedo hacer que /usr/libexec/java_home lo reconozca?
pregunta Tikus Kucing 08.12.2012 - 19:37

1 respuesta

2

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

Entonces puedes:

$ 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

Tenga en cuenta que esto es un truco y no probé nada más que iniciar java ... Solo estaba desarrollando su consejo para crear el paquete.

    
respondido por el Anjo 20.02.2013 - 19:47

Lea otras preguntas en las etiquetas