Java ist ein optionales Paket für die neuesten Versionen von macOS.
Nach der Installation scheint die Umgebungsvariable JAVA_HOME jedoch nicht richtig eingestellt zu sein .
Java ist ein optionales Paket für die neuesten Versionen von macOS.
Nach der Installation scheint die Umgebungsvariable JAVA_HOME jedoch nicht richtig eingestellt zu sein .
Antworten:
Wenn das optionale Java-Paket oder Oracle JDK installiert ist, wird durch Hinzufügen einer der folgenden Zeilen zu Ihrer Datei ~ / .bash_profile die Umgebungsvariable entsprechend festgelegt.
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)"
Update: -v Flag basierend auf der Antwort von Jilles van Gurp hinzugefügt .
/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 ist die Java Preferences-App gedacht, die in meinem Fall kaputt zu sein scheint und die JVM nicht richtig ändert. Es listet zwar die 1.7 JVM auf, aber ich kann alles, was ich will, umschalten / deaktivieren und ziehen und ablegen, ohne die Ausgabe von tatsächlich zu ändern /usr/libexec/java_home
.
Selbst nach der Installation von 1.7.0 u6 von Oracle unter Lion und der Festlegung als Standard in den Einstellungen wurde das Apple 1.6-Java nach Hause zurückgegeben. Das einzige Update, das für mich tatsächlich funktioniert, ist das manuelle Einstellen von JAVA_HOME:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Zumindest auf diese Weise wird beim Ausführen über die Befehlszeile 1.7 verwendet. /usr/libexec/java_home
besteht immer noch auf 1.6.
Update : Grundlegendes zu Java über die Befehlszeile unter OSX bietet eine bessere Erklärung, wie dies funktioniert.
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
ist der Weg, es zu tun. Beachten Sie, dass das Aktualisieren auf 1.8 einwandfrei funktioniert.
Für mich, Mountain Lion 10.8.2, funktioniert die am häufigsten gewählte Lösung nicht. Ich habe jdk 1.7 über Oracle und maven von homebrew installiert.
Meine Lösung stammt aus der Datei hadoop-env.sh von hadoop, die ich auch von Homebrew installiert habe. Ich füge den folgenden Satz in ~ / .bash_profile hinzu und es funktioniert.
export JAVA_HOME="$(/usr/libexec/java_home)"
Diese Lösung funktioniert auch für OS X Yosemite mit Java 1.8, das von Oracle installiert wurde.
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Keine der obigen Antworten hat mir geholfen. Ich nehme an, alle Antworten sind für ältereOS X
Führen Sie für OS X Yosemite 10.10 die folgenden Schritte aus
Verwenden Sie Ihren bevorzugten Texteditor, um Folgendes zu öffnen: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
Fügen Sie der Datei die folgende Zeile hinzu und speichern Sie sie (: gefolgt von "x" für vim):
export JAVA_HOME=$(/usr/libexec/java_home)
Geben Sie dann im Terminal die folgenden zwei Befehle ein, um die Ausgabe anzuzeigen:
$ source ~/.bash_profile
$ echo $JAVA_HOME
In der zweiten Zeile aktualisieren Sie den Inhalt der .bash_profile
Datei.
Update für Java 9 und einige nette Aliase.
In .bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Beachten Sie, dass dies für die neueste Version der Fall ist 9
und nicht 1.9
.
Aktives Java einstellen:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Einige zusätzliche Alias zum Wechseln zwischen den verschiedenen Versionen:
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)
BEARBEITEN: 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'
BEARBEITEN: 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'
Das obige hat bei den EC2-Tools von Amazon nicht funktioniert, da es bin/java
darunter erwartet JAVA_HOME
. /System/Library/Frameworks/JavaVM.framework/Home
funktionierte.
Unter Mac OS X Lion habe ich Folgendes verwendet, um Visualgc für die Ausführung festzulegen:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
? Der Befehl / usr / libexec / java_home gibt /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home zurück
Folgendes hat bei mir funktioniert. Ich verwende ZSH unter OSX Yosemite mit installiertem Java 8.
Der folgende Befehl /usr/libexec/java_home
gibt den Pfad zu JDK home aus:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
In Ihrem ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
Eine bessere (aufrüstbarere) Möglichkeit besteht darin, Folgendes zu verwenden:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Dies sollte auch mit AWS funktionieren, da es sich bin
unter Home befindet
Neuere Oracle-JVMs wie 1.7.0_21-b12 scheinen hier installiert zu werden:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
Tool gibt einen Fehler für diese Java-Versionen zurück.
für macOS Mojave 10.14.1 und JAVA 11.0.1 habe ich das Profil als festgelegt
export JAVA_HOME=$(/usr/libexec/java_home)
Geben Sie dies ein, um Folgendes zu bestätigen:
$JAVA_HOME/bin/java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
Mein Ansatz ist:
.bashrc
export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME
# -- optional
# export PATH=$JAVA_HOME/bin:$PATH
Dies macht es sehr einfach, zwischen J6 und J7 zu wechseln
Ich musste es explizit auf den genauen Pfad auf meinem Macbook Air einstellen.
Schritte folgten:
echo $JAVA_HOME
(wenn es eingestellt ist, wird der Pfad angezeigt). Wenn nicht, versuchen Sie es mitsudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
Ich verwende MACOS MOJAVE - 10.14.2 (18C54) auf einem Macbook Air mit JAVA 8
Für Mac OS X 10.9 habe ich die neueste Version von JRE von Oracle installiert und dann JAVA_HOME auf /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home zurückgesetzt.
Ich bin mir sicher, dass es einen besseren Weg gibt, habe mich aber zum Laufen gebracht.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
OSX Yosemite, ZSH und Java SE Runtime Environment 8 musste ich:
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin
und in ~ / .zshrc JAVA_HOME in ändern
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
Ich habe das gleiche Problem, nachdem ich mein Mac OS aktualisiert habe und Folgendes für mich funktioniert hat:
cmd> vi ~ / .bash_profile
Fügen Sie die Zeile für JAVA_HOME hinzu / aktualisieren Sie sie: export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home"
cmd> source ~ / .bash_profile oder öffne ein neues Terminal
Ich denke, die JDK-Version kann abweichen, verwenden Sie also einfach die Version, die Sie unter / Library / Java / JavaVirtualMachines / haben
Wenn Sie mehrere Versionen von JDK unter Mac OS X (Yosemite) benötigen, kann es hilfreich sein, Skripte für das automatische Wechseln zwischen diesen hinzuzufügen.
Sie bearbeiten Ihr ~ / .bash_profile und fügen Folgendes hinzu:
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
Das Skript entfernt zunächst andere JDK-Versionen im PATH, damit sie unsere neue JDK-Version nicht beeinträchtigen. Dann wird / usr / libexec / java_home , ein Befehl, der installierte JDK-Versionen auflistet, geschickt verwendet . Das Argument -v weist java_home an, den Pfad des JDK mit der bereitgestellten Version zurückzugeben, z. B. 1.7. Wir aktualisieren auch den PATH , um auf das bin-Verzeichnis des neu gefundenen JAVA_HOME- Verzeichnisses zu verweisen . Am Ende können wir die Funktion einfach mit ausführen
setjdk 1.7
Hiermit wird die zuletzt installierte JDK-Version des 1.7-Zweigs ausgewählt. Um eine bestimmte Version auszuwählen, können Sie diese einfach ausführen
setjdk 1.7.0_51
stattdessen. Führen Sie / usr / libexec / java_home -V aus , um weitere Informationen zur Auswahl von Versionen zu erhalten.
PS Vergessen Sie nicht, ~ / .bash_profile zu speichern, nachdem Sie es gespeichert haben.
Diese Antwort bezieht sich auf Mountain Lion und nicht auf Lion. Ich musste dies für die AWS Command Line Tools tun. Gemäß den AWS-Dokumenten wird das Ausführen which java
zurückgegeben /usr/bin/java
.
Also setzte ich JAVA_HOME=/usr
meine ein .bashrc
.
Anscheinend /usr/bin/java
ist eine symbolische Verbindung, mit /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
der alles funktioniert.
Aktualisieren
Wie im folgenden Kommentar erwähnt, ist dieser JAVA_HOME
Wert keine ideale Lösung, wenn die JAVA_HOME
Umgebungsvariable von anderen Dingen als den AWS-Befehlszeilentools verwendet werden soll. Es funktioniert jedoch einwandfrei für die AWS-Befehlszeilentools, wie in den Dokumenten angegeben.
Für Mac Yosemite
JDK 1.7.0_xx verwendet
$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
Setzen Sie einfach java_home der Version 1.8 jdk in die netbeans.conf
Datei:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
Kommentarzeile:
netbeans_jdkhome="path/to/jdk"
und setze den Pfad zu deinem 1.8 jdk, in meinem Fall:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
Mit diesem Ansatz können Sie mehrere JDK-Versionen auf Mac OS verwenden
Für Fish-Terminal-Benutzer auf dem Mac (ich glaube, es ist auch unter Linux verfügbar) sollte dies funktionieren:
set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8 //or whichever version you want as default
für Mac-Benutzer. Java 8 sollte hinzufügen
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Java 6:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home