Wie können Sie die Standardversion von Java auf einem Mac ändern?
Antworten
Zu viele Anzeigen?Ohne zusätzliche Tools installieren zu müssen, ist eine einfache Möglichkeit, einen separat installierten JDK als vollwertiges Mitglied von /usr/libexec/java_home -V
zu erkennen, ihn wie folgt als Symbolischen Link zu setzen:
sudo ln -s /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk
sollte ein Verzeichnis sein, das Unterverzeichnisse wie Contents/Home/bin
enthält.
Ein häufiger Anwendungsfall besteht darin, das JDK/JRE, das mit Android Studio geliefert wird, zu registrieren:
Der Standardort für die Java-Tools in neueren Versionen von Android Studio auf macOS ist /Applications/Android\ Studio.app/Contents/jre
. Wir verwenden jdk-android-studio.jdk
als Kennung:
sudo ln -s /Applications/Android\ Studio.app/Contents/jre /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk
Jetzt wird es von /usr/libexec/java_home -V
unter Matching Java Virtual Machines
aufgeführt:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
11.0.13 (arm64) "JetBrains s.r.o." - "OpenJDK 11.0.13" /Applications/Android Studio.app/Contents/jre/Contents/Home
/Applications/Android Studio.app/Contents/jre/Contents/Home
JDK Switch Script
Ich habe die Antwort von @Alex oben angepasst und folgendes geschrieben, um den Code für Java 9 zu fixieren.
$ cat ~/.jdk
#!/bin/bash
#Liste verfügbarer JDKs
alias jdks="/usr/libexec/java_home -V"
# JDK-Versionen umschalten - z.B. `jdk 6` wird auf Version 1.6 umschalten
function jdk() {
echo "Java-Version $1 umschalten";
gewünschteVersion=$1
alteStilVersion=8
# Setze die Version
if [ $gewünschteVersion -gt $alteStilVersion ]; then
export JAVA_HOME=$(/usr/libexec/java_home -v $1);
else
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
fi
echo "Setze JAVA_HOME=$JAVA_HOME"
which java
java -version;
}
Umschalten auf Java 8
$ jdk 8
Java-Version 8 umschalten
Setze JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Umschalten auf Java 9
$ jdk 9
Java-Version 9 umschalten
Setze JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/usr/bin/java
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
Vom offiziellen java_home(1) Handbuch von Apple:
**VERWENDUNG**
/usr/libexec/java_home hilft Benutzern, ein $JAVA_HOME in ihren Login-RC-Dateien zu setzen, oder bietet einen Weg für
Befehlszeilen-Java-Tools, den am besten geeigneten JVM zu verwenden, der eine Mindestversions- oder Architektur-Anforderung erfüllen kann. Das Argument --exec kann Tools im ausgewählten $JAVA_HOME/bin-Verzeichnis aufrufen,
was nützlich ist, um Java-Befehlszeilentools aus launchd-Plists zu starten, ohne den vollständigen Pfad zum Java-Befehlszeilentool fest einzukodieren.
Verwendung für bash-ähnliche Shells:
$ export JAVA_HOME=`/usr/libexec/java_home`
Verwendung für csh-ähnliche Shells:
% setenv JAVA_HOME `/usr/libexec/java_home`
Zuerst finden Sie heraus, wo Sie die Umgebungsvariablen speichern.
- emacs
- bash_profile
- zshrc-Datei
Schritte zum Einrichten der Umgebungsvariable:-
-
Laden Sie das jdk von JAVA herunter
-
installieren Sie es durch Doppelklick
-
Richten Sie nun die Umgebungsvariablen in Ihrer Datei ein
a. Für emacs.profile können Sie diesen Link verwenden ODER sehen Sie den Screenshot unten
b. Für das ZSH-Profil-Setup -
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
2. source ~/.zshrc - Starten Sie .zshrc neu, um die Änderungen zu reflektieren.
3. echo $JAVA_HOME - Stellen Sie sicher, dass der Pfad richtig gesetzt ist
----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
4. java -version
--> java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
Jetzt können Sie ganz einfach eine JAVA-Version aktualisieren oder downgraden.