Wie können Sie die Standardversion von Java auf einem Mac ändern?
Antworten
Zu viele Anzeigen?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.
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