Я пытаюсь установить JDK 8 на OS X Mountain Lion (чтобы поэкспериментировать с новыми функциями лямбда).
Машина, недавно обновленная с OS X 10.6 до 10.8, с
$ 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/
и эта папка из эпохи OS X 10.6:
/System/Library/Frameworks/JavaVM.framework/Versions/
В ~/.bashrc я установил
export JAVA_HOME=/Library/Java/JavaVirtualMachines/Home
Так что я
$ 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
Скачал файл .tar.gz с http://jdk8.java.net/lambda/ и распаковал его в
(Я создал папки jdk1.8.0.jdk/Contents/Home
вручную)
/Library/Java/JavaVirtualMachines/Home
, указывающая на jdk1.8.Теперь у меня есть
$ 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/
...
Но java_home
утилиту, похоже, это не волнует:
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home
Он даже не знает, что есть JDK 8:
$ /usr/libexec/java_home -v 1.8*
Unable to find any JVMs matching version "1.8*".
Я хочу, /usr/libexec/java_home
чтобы утилита нашла мои установленные JDK, поэтому я могу использовать что-то вроде этого:
alias setjdk17='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7*)'
alias setjdk18='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8*)'
и избавиться от Home
символической ссылки. Кто-нибудь знает
/usr/libexec/java_home
узнать это?Вам также необходимо скопировать каталог Contents/MacOS и Info.plist из SDK 1.7 и адаптировать их (изменив в нем строки версии).
Тогда ты можешь:
$ 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
Обратите внимание, что это хак, и я не пробовал ничего, кроме запуска java... Я просто опирался на ваш совет по созданию пакета.
Тикус Кучинг