Java ist ein optionales Paket für die neuesten Versionen von macOS.
Einmal installiert, sieht es so aus, als sei die Java_HOME Umgebungsvariable nicht richtig gesetzt .
Wenn das optionale Paket Java oder Oracle JDK installiert ist, Durch Hinzufügen einer der folgenden Zeilen zu Ihrer Datei ~/.bash_profile wird 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 Jilles van GurpAntwort 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 gibt es die Java Preferences-App, die in meinem Fall kaputt ist und die JVM nicht richtig ändert. Es wird zwar die 1.7-JVM aufgelistet, aber ich kann dort ein- und ausschalten und ziehen und ziehen, was ich möchte, ohne die Ausgabe von /usr/libexec/Java_home
tatsächlich zu ändern.
Selbst nachdem 1.7.0 u6 von Oracle auf Lion installiert und in den Voreinstellungen als Standard festgelegt wurde, wurde Apple 1.6 Java nach Hause zurückgegeben. Das einzige Problem, das eigentlich für mich funktioniert, ist, Java_HOME manuell einzustellen:
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Zumindest auf diese Weise, wenn es von der Kommandozeile aus ausgeführt wird, wird 1.7 verwendet. /usr/libexec/Java_home
besteht weiterhin auf 1.6.
Update: Java über die Befehlszeile unter OSX verstehen hat 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 ein Update auf 1.8 gut funktioniert.
Für mich, Mountain Lion 10.8.2, funktioniert die am meisten gewählte Lösung nicht .. __ Ich installierte jdk 1.7 über Oracle und maven von Homebrew.
Meine Lösung ist aus der hadoop-env.sh-Datei 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 wird.
Keine der obigen Antworten hat mir geholfen. Ich denke, alle Antworten sind für ältere OS X
Führen Sie für OS X Yosemite 10.10 die folgenden Schritte aus
Verwenden Sie Ihren bevorzugten Texteditor zum Ö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 es sich bei der neuesten Version um 9
Und nicht um 1.9
Handelt.
Setze aktives Java:
export Java_HOME=$Java_HOME8
export PATH=$Java_HOME/bin:$PATH
Einige zusätzliche Aliasnamen 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)
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'
Das oben genannte hat bei Amazon EC2-Tools nicht funktioniert, da es bin/Java
usw. unter Java_HOME
erwartet. /System/Library/Frameworks/JavaVM.framework/Home
hat funktioniert.
Für OS X können Sie Folgendes tun:
export Java_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/Java_home`
Um die Ausführung von Visualgc unter Mac OS X Lion auszuführen, habe ich Folgendes verwendet:
export Java_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
Folgendes hat für mich gearbeitet. Ich verwende ZSH auf OSX Yosemite, auf dem Java 8 installiert ist.
Der folgende Befehl /usr/libexec/Java_home
gibt den Pfad zur JDK-Startseite 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"
Neuere Oracle-JVMs wie 1.7.0_21-b12 scheinen hier installiert zu werden:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Eine bessere (besser aufrüstbare) Möglichkeit ist die Verwendung der folgenden:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Dies sollte mit AWS funktionieren, da es unter Home bin
hat
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
für macOS Mojave 10.14.1 und Java 11.0.1 Ich habe das Profil als festgelegt
export Java_HOME=$(/usr/libexec/Java_home)
zur Bestätigung Folgendes in das Terminal eingeben:
$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)
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 sicher, dass es einen besseren Weg gibt, aber mich zum Laufen gebracht hat.
hughsmac: ~ hbrien $ echo $ Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Inhalt/Start
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 export Java_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
ändern
Ich habe das gleiche Problem, nachdem ich mein Mac OS aufgerüstet habe und folgendes für mich gearbeitet habe:
cmd> vi ~/.bash_profile
Zeile für Java_HOME hinzufügen/aktualisieren: Export Java_HOME = "/ Library/Java/JavaVirtualMachines/jdk1.7.0_15.jdk/Contents/Home"
cmd> source ~/.bash_profile oder öffnen Sie ein neues Terminal
Ich denke, die jdk-Version kann sich unterscheiden, verwenden Sie 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, Skripts für das automatische Umschalten 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 [email protected]`
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 -PFAD, damit sie nicht mit unserer neuen JDK-Version interferieren. Dann wird / usr/libexec/Java_home geschickt verwendet, ein Befehl, der installierte JDK-Versionen auflistet. Das Argument -v weist Java_home an, den Pfad des JDK mit der angegebenen Version zurückzugeben, z. B. 1.7. Wir aktualisieren auch den -PFAD, 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
dadurch wird die zuletzt installierte JDK-Version des 1.7-Zweigs ausgewählt. Um eine bestimmte Version auszuwählen, können Sie sie einfach ausführen
setjdk 1.7.0_51
stattdessen. Führen Sie / usr/libexec/Java_home -V aus, um weitere Informationen zur Auswahl der Versionen zu erhalten.
P.S. Vergessen Sie nicht, source ~/.bash_profile nach dem Speichern zu speichern.
Ich musste es explizit auf den exakten Pfad meines Macbooks einstellen.
Schritte folgten:
echo $Java_HOME
(wenn es gesetzt ist, wird der Pfad angezeigt), falls nicht, suchen Sie mit Sudo find /usr/ -name *jdk
danach.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 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 1.8 jdk-Version in 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 deiner 1.8 jdk, in meinem Fall:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
Dieser Ansatz ermöglicht es Ihnen, mehrere Jdk-Versionen auf Mac OS zu haben
Für Benutzer des Fish-Terminals 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