Mengapa / usr / libexec / java_home tidak mengenali JDK 1.8?

5

Saya mencoba menginstal JDK 8 di OS X Mountain Lion (untuk bereksperimen dengan fitur lambda baru).

Titik pangkal

Mesin baru-baru ini diperbarui dari OS X 10.6 hingga 10.8, dengan

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

dan folder ini dari era OS X 10.6:

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

Di ~ / .bashrc yang telah saya atur

export JAVA_HOME=/Library/Java/JavaVirtualMachines/Home

Jadi saya punya

$ 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

Bagaimana saya menginstal JDK 8

  1. Mengunduh file .tar.gz dari http://jdk8.java.net/lambda/ dan membukanya

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

    (Saya membuat folder jdk1.8.0.jdk/Contents/Homesecara manual)

  2. Mengubah symlink /Library/Java/JavaVirtualMachines/Homeuntuk menunjuk ke jdk1.8

Sekarang sudah

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

Tetapi java_homeutilitas itu tampaknya tidak peduli:

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

Bahkan tidak tahu bahwa ada JDK 8 yang tersedia:

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

Pertanyaan

Saya ingin /usr/libexec/java_homeutilitas untuk menemukan JDK yang diinstal, jadi saya dapat menggunakan sesuatu seperti ini:

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

dan singkirkan Homesymlink. Apakah ada yang tahu

  • bagaimana saya bisa menginstal JDK 8 dengan benar?
  • bagaimana saya bisa /usr/libexec/java_homemengenalinya?
Tikus Kucing
sumber

Jawaban:

2

Anda juga perlu menyalin direktori Contents / MacOS dan Info.plist dari 1.7 SDK dan mengadaptasinya (dengan mengubah string versi di dalamnya).

Maka kamu bisa:

$ 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

Perhatikan bahwa ini adalah peretasan dan saya tidak mencoba yang lain selain memulai java ... Saya baru saja membangun tip Anda untuk membuat paket.

Anjo
sumber
Terima kasih atas balasan Anda, Anjo. Saya akan mencobanya segera setelah saya memperbaiki sistem OS X 10.8 saya (yang sekarang rusak: [ apple.stackexchange.com/questions/86601/… ).
Tikus Kucing