(Nie byłem pewien, czy to powinno trwać SU ... migracja jest z pewnością opcją, ale więcej programistów czyta tutaj pytania, więc tutaj idzie).
Używam systemu Mac OS X 10.8.4 i mam zainstalowany JDK 1.6.0_51 firmy Apple oraz JDK 1.7.0_25 firmy Oracle. Niedawno zainstalowałem JDK w wersji zapoznawczej Oracle 1.8 dla niektórych programów w wersji wstępnej, które tego wymagają. Teraz, kiedy uruchamiam / usr / libexec / java_home, otrzymuję to:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
1.7.0_25, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
1.6.0_51-b11-457, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_51-b11-457, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Wspaniały.
Jednak bieganie:
$ java -version
Zwroty:
java version "1.8.0-ea"
Oznacza to, że domyślną wersją Javy jest obecnie wersja przedpremierowa, która psuje niektóre „normalne” pakiety (w moim przypadku VisualVM).
Nie mogę ustawić, JAVA_HOME
ponieważ uruchamianie aplikacji ignoruje zmienne środowiskowe, nawet podczas uruchamiania z wiersza poleceń (np $ open /Applications/VisualVM.app
.).
Czy jest więc plik, który mogę edytować, w którym mogę globalnie ustawić preferencje porządkowania maszyny JVM ?
(Proszę nie mówić mi, żebym uruchamiał panel preferencji Java, ponieważ to po prostu nie działa: nie zawiera niczego przydatnego i zawiera tylko jedną z 4 maszyn JVM, które zainstalowałem).
Aktualizacja :
Maszyny JVM firmy Oracle mieszkają w /Library/Java/JavaVirtualMachines
. jdk1.8.0.jvm.xyz
Zmiana nazwy katalogu JDK 1.8 na niczego nie zmienia: java_home
nadal znajduje go we właściwym miejscu, a uruchomienie / usr / bin / java nadal wykonuje JVM 1.8. Nie jest to problem z linkami synchronizacyjnymi itp.
Odpowiedzi na podobne pytania
Chociaż ta odpowiedź jest równoznaczna z włamaniem, które usunie wersje Javy z przechwytywania przez java_home, nadal nie odpowiada na pytanie, w jaki sposób java_home wybiera swoje domyślne ustawienie i czy użytkownicy mogą je ustawić w sposób nieniszczący .
/usr/bin/java
wskazuje na /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
. Versions
Katalog nie zawiera dowiązania do 1.8.0 JDK. Zamiast tego zawiera katalog o użytecznej nazwie, A
który Current
wskazuje na. A
nie jest "JAVA_HOME. Ma podkatalog o nazwie, Commands
który ma java
polecenie, ale jest to nieprzezroczysty uniwersalny plik binarny, który robi, kto-wie-co. Podejrzewam, że używa java_home
itp., aby zdecydować, którego JVM użyć."
/usr/bin/java
to tylko symboliczne łącze