Perché / usr / libexec / java_home non riconosce JDK 1.8?

5

Sto cercando di installare un JDK 8 su OS X Mountain Lion (per sperimentare le nuove funzionalità lambda).

Punto di partenza

Una macchina recentemente aggiornata da 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/

e questa cartella dell'era OS X 10.6:

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

In ~ / .bashrc che ho impostato

export JAVA_HOME=/Library/Java/JavaVirtualMachines/Home

Quindi ho

$ 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

Come ho installato JDK 8

  1. Ha scaricato il file .tar.gz dal link e lo ha decompresso in

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

    (Ho creato le cartelle jdk1.8.0.jdk/Contents/Home manualmente)

  2. Modificato il link simbolico /Library/Java/JavaVirtualMachines/Home in modo che punti a jdk1.8

Ora ho

$ 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/
  ...

Ma l'utilità java_home non sembra interessata:

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

Non sa nemmeno che c'è un JDK 8 disponibile:

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

Domanda

Vorrei che l'utilità /usr/libexec/java_home trovi i miei JDK installati, quindi posso usare qualcosa del genere:

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

e sbarazzarsi del symlink Home . Qualcuno sa

  • come posso installare correttamente JDK 8?
  • come posso renderlo /usr/libexec/java_home a riconoscerlo?
posta Tikus Kucing 08.12.2012 - 19:37
fonte

1 risposta

2

Devi anche copiare la directory Contents / MacOS e Info.plist dall'SDK 1.7 e adattarli (cambiando le stringhe della versione in esso).

Quindi puoi:

$ 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

Si noti che si tratta di un hack e non ho provato nient'altro che avviare java ... Stavo solo sviluppando la tua idea di creare il pacchetto.

    
risposta data 20.02.2013 - 19:47
fonte

Leggi altre domande sui tag