(Ich war mir nicht sicher, ob dies auf SU gehen sollte ... Migration ist sicherlich eine Option, aber mehr Programmierer lesen hier Fragen, also geht es weiter).
Ich verwende Mac OS X 10.8.4 und habe das JDK 1.6.0_51 von Apple sowie das JDK 1.7.0_25 von Oracle installiert. Ich habe kürzlich das 1.8-Vorschau-JDK von Oracle für eine Pre-Release-Software installiert, für die dies erforderlich ist. Wenn ich jetzt / usr / libexec / java_home ausführe, erhalte ich Folgendes:
$ /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
Toll.
Laufen jedoch:
$ java -version
Kehrt zurück:
java version "1.8.0-ea"
Das bedeutet, dass die Standardversion von Java derzeit die Vorabversion ist, die einige "normale" Pakete (in meinem Fall VisualVM) zerstört.
Ich kann nicht festlegen, JAVA_HOME
da beim Starten von Anwendungen Umgebungsvariablen ignoriert werden, selbst wenn sie über die Befehlszeile gestartet werden (z $ open /Applications/VisualVM.app
. B. ).
Gibt es eine Datei, die ich bearbeiten kann und in der ich meine JVM-Bestelleinstellungen global festlegen kann ?
(Bitte fordern Sie mich nicht auf, das Java-Einstellungsfenster zu starten, da dies einfach nicht funktioniert: Es enthält nichts Nützliches und listet nur eine der 4 JVMs auf, die ich installiert habe.)
Update :
Oracle JVMs leben in /Library/Java/JavaVirtualMachines
. Das Umbenennen des JDK 1.8-Verzeichnisses in jdk1.8.0.jvm.xyz
ändert nichts: Es befindet sich java_home
immer noch an der richtigen Stelle, und wenn Sie / usr / bin / java ausführen, wird die 1.8-JVM weiterhin ausgeführt. Dies ist kein Problem mit Synlinks usw.
Antworten auf ähnliche Fragen
Während diese Antwort bietet , was zu einem Hack beträgt die Java - Versionen von abgeholt von java_home zu entfernen, es antwortet immer noch nicht diese Frage, wie java_home seinen Standard wählt und ob Benutzer können nicht-destruktiv es eingestellt .
/usr/bin/java
zeigt auf /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
. Das Versions
Verzeichnis enthält keinen Symlink zum 1.8.0 JDK. Stattdessen enthält es ein Verzeichnis, das hilfreich aufgerufen wird und auf A
das Current
verweist. A
ist kein "JAVA_HOME". Es hat ein Unterverzeichnis namens, Commands
das einen java
Befehl hat, aber es ist eine undurchsichtige universelle Binärdatei, die wer weiß was tut. Ich vermute, sie verwendet java_home
usw., um zu entscheiden, welche JVM verwendet werden soll.
/usr/bin/java
ist nur ein Symlink