591 Stimmen

Wo ist JAVA_HOME unter macOS Mojave (10.14) bis Lion (10.7)?

Java ist ein optionales Paket in den neuesten Versionen von macOS.

Nach der Installation sieht es jedoch so aus, als ob die JAVA_HOME Umgebungsvariable ist nicht richtig eingestellt .

1098voto

Olivier Refalo Punkte 47916

Mit dem Optionales Java-Paket o Oracle JDK installiert, Fügen Sie eine der folgenden Zeilen in Ihr ~/.bash_profile Datei wird die Umgebungsvariable entsprechend gesetzt.

export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
or simply
export JAVA_HOME="$(/usr/libexec/java_home)"

Hinweis: Wenn Sie Folgendes installiert haben openjdk auf Mac mit Gebräu , laufen sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk damit das oben genannte funktioniert

Aktualisierung: hinzugefügt -v Flagge basierend auf Jilles van Gurp Antwort .

125voto

Jilles van Gurp Punkte 7423

/usr/libexec/java_home ist kein Verzeichnis, sondern eine ausführbare Datei. Es gibt das aktuell konfigurierte JAVA_HOME aus und ändert es nicht wirklich. Dafür gibt es die Java Preferences App, die in meinem Fall kaputt zu sein scheint und die JVM nicht wirklich korrekt ändert. Sie listet zwar die 1.7 JVM auf, aber ich kann sie umschalten und per Drag & Drop verschieben, wie ich will, ohne dass sich die Ausgabe von /usr/libexec/java_home .

Selbst nachdem ich 1.7.0 u6 von Oracle unter Lion installiert und in den Einstellungen als Standard eingestellt hatte, wurde immer noch das Apple 1.6 Java Home angezeigt. Die einzige Lösung, die tatsächlich funktioniert für mich ist die Einstellung JAVA_HOME manuell:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/

Auf diese Weise wird zumindest bei der Ausführung über die Befehlszeile die Version 1.7 verwendet. /usr/libexec/java_home beharrt immer noch auf 1.6.

更新情報 : Java von der Kommandozeile unter OSX verstehen hat eine bessere Erklärung, wie das funktioniert.

export JAVA_HOME=`/usr/libexec/java_home -v 1.7` 

ist der richtige Weg. Hinweis: Die Aktualisierung auf 1.8 funktioniert einwandfrei.

84voto

onpduo Punkte 979

Bei mir, Mountain Lion 10.8.2, funktioniert die am häufigsten gewählte Lösung nicht. Ich installierte jdk 1.7 über Oracle und Maven von Homebrew.

Meine Lösung stammt aus der Datei hadoop-env.sh von hadoop, die ich ebenfalls über homebrew installiert habe. Ich füge den folgenden Satz in ~/.bash_profile ein, und es funktioniert.

export JAVA_HOME="$(/usr/libexec/java_home)"

Diese Lösung funktioniert auch für OS X Yosemite mit installiertem Java 1.8 von Oracle.

44voto

Giri Punkte 2624

Keine der oben genannten Antworten hat mir geholfen. Ich nehme an, alle Antworten sind für ältere OS X

Für OS X Yosemite 10.10 gehen Sie folgendermaßen vor

Verwenden Sie zum Öffnen Ihren bevorzugten Texteditor: ~/.bash_profile

//This command will open the file using vim
$ vim ~/.bash_profile

Fügen Sie die folgende Zeile in die Datei ein und speichern Sie sie ( : gefolgt von einem "x" für vim):

export JAVA_HOME=$(/usr/libexec/java_home)

Geben Sie dann im Terminal die folgenden beiden Befehle ein, um die Ausgabe zu sehen:

$ source ~/.bash_profile

$ echo $JAVA_HOME

In der zweiten Zeile aktualisieren Sie den Inhalt von .bash_profile Datei.

36voto

Peter Keller Punkte 7026

Update für Java 9 und einige nette Aliase.

Unter .bash_profile :

export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`

Beachten Sie, dass es sich bei der neuesten Version um 9 und nicht 1.9 .

Aktives Java einstellen:

export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH

Einige zusätzliche Aliasnamen, um zwischen den verschiedenen Versionen zu wechseln:

alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'

Test im Terminal:

% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

EDIT: Update für Java 10

export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'

EDIT: Update für Java 11

export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X