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 .

3voto

mmell Punkte 2398

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 ändern Sie in ~/.zshrc JAVA_HOME in export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"

2voto

Pavel Punkte 4572

Für Java 11 (JDK 11) kann es mit dem folgenden Befehl gefunden werden:

/usr/libexec/java_home -v 11

1voto

dev Punkte 10669

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

1voto

Shirish Singh Punkte 557

Praktischer Befehl, um Java Home und andere Details zu kennen.

java -XshowSettings:properties -version

und alle Java-Häuser auf Ihrem Mac zu kennen:

/usr/libexec/java_home -V

1voto

azec-pdx Punkte 4511

Wenn Sie mehrere JDK-Versionen unter Mac OS X (Yosemite) benötigen, könnte es hilfreich sein, ein Skript für den automatischen Wechsel zwischen den Versionen hinzuzufügen.

Sie bearbeiten Ihre ~/.bash_profile und fügen Sie 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 in der Datei PATH damit sie sich nicht mit unserer neuen JDK-Version überschneiden. Dann macht es cleveren Gebrauch von /usr/libexec/java_home das ist ein Befehl, der die installierten JDK-Versionen auflistet. Die Seite -v Argument sagt java_home um den Pfad des JDK mit der angegebenen Version, z. B. 1.7, zurückzugeben. Wir aktualisieren auch die PATH auf das bin-Verzeichnis des neu gefundenen JAVA_HOME Verzeichnis. Am Ende können wir die Funktion einfach ausführen mit

setjdk 1.7

die die letzte installierte JDK-Version des 1.7-Zweigs auswählt. Um eine bestimmte Version auszuwählen, können Sie einfach Folgendes ausführen

setjdk 1.7.0_51

stattdessen. ausführen. /usr/libexec/java_home -V um weitere Informationen zur Auswahl der Versionen zu erhalten.

P.S. Vergessen Sie nicht Quelle ~/.bash_profile nachdem Sie sie gespeichert haben.

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