Jak mogę zmienić domyślną maszynę wirtualną Java systemu Mac OS zwróconą z / usr / libexec / java_home

(Nie był pewien, czy powinno się to odbyć na SU ... migracja jest z pewnością opcją, ale więcej programistów czyta tutaj pytania, więc tutaj).

Używam systemu Mac OS X 10.8.4 i mam zainstalowanego JDK 1.6.0_51 firmy Apple oraz JDK 1.7.0_25 firmy Oracle. Niedawno zainstalowałem JDK Oracle z podglądem 1.8 dla niektórych wersji oprogramowania, które tego wymagają. Teraz, gdy 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

Świetny.

Jednak działa:

$ java -version

Zwraca:

java version "1.8.0-ea"

Oznacza to, że domyślną wersją Java jest obecnie wersja przedpremierowa, która łamie 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 istnieje plik, który mogę edytować, w którym mogę ustawić preferencje składania JVMglobalnie?

(Nie mów mi, żebym uruchomił Panel Preferencji Java, ponieważ to po prostu nie działa: nie zawiera niczego użytecznego i wyświetla tylko jedną z 4 zainstalowanych JVM).

Aktualizacja:

JVM Oracle mieszkają w/Library/Java/JavaVirtualMachines. Zmiana nazwy katalogu JDK 1.8 najdk1.8.0.jvm.xyz nic nie zmienia:java_home wciąż znajduje go we właściwym miejscu, a uruchomienie / usr / bin / java nadal wykonuje maszynę JVM 1.8. To nie jest problem z synlinkami itp.

Odpowiedzi na podobne pytania

Podczasta odpowiedź oferuje hack, który usunie wersje Javy z java_home, ale nadal nie odpowiada na to pytaniew jaki sposób java_home wybiera domyślne ustawienia i określa, czy użytkownicy mogąnieniszczące to ustawia.

questionAnswers(10)

yourAnswerToTheQuestion