Wie können Sie die Standardversion von Java auf einem Mac ändern?
Antworten
Zu viele Anzeigen?Fügen Sie diese Funktion zu bashrc oder zshrc hinzu, java-change [version]
um das JDK auszuwählen
# setze und wechsel java versionen
funktion java-änderung() {
echo "----- alte java version -----"
java -version
if [ $# -ne 0 ]; dann
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
echo "----- neue java version -----"
java -version
}
Basierend auf der Antwort von @markhellewell habe ich ein paar Alias-Funktionen erstellt, die das für Sie erledigen. Fügen Sie diese einfach zu Ihrer Shell-Startdatei hinzu
# Verfügbare JDKs auflisten
alias jdks="/usr/libexec/java_home -V"
# JDK-Versionsumschaltung - z.B. `jdk 6` wechselt zur Version 1.6
function jdk() {
echo "Wechsel der Java-Version";
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
java -version;
}
https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4
Sehr einfache Antwort:
-
Führen Sie aus und erhalten Sie alle installierten JDK-Pfade
/usr/libexec/java_home -V
-
Führen Sie Direktbefehle von jenv.be aus
git clone https://github.com/jenv/jenv.git ~/.jenv #Linux/macOS ODER brew install jenv #macOS
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc $ echo 'eval "$(jenv init -)"' >> ~/.zshrc
jenv add PATH_FROM_STEP_1
Ich schlage vor, sdkman zu verwenden, um verschiedene Versionen von Java zu verwalten, wie bereits in den vorherigen Antworten vorgeschlagen. Allerdings hat niemand den einfachen Weg zum Wechsel erwähnt. Führen Sie den folgenden Befehl aus, um zu sehen, welche Versionen installiert sind. Ich habe Java 8 und Java 17 mit sdkman installiert.
sdk list java
Ausgabe
Oracle | | 20.0.2 | oracle | | 20.0.2-oracle
| | 20.0.1 | oracle | | 20.0.1-oracle
| >>> | 17.0.8 | oracle | installed | 17.0.8-oracle
Derzeit ist meine Standardversion auf Java 8 eingestellt. Wenn ich zu Java 17 wechseln möchte, verwende den folgenden Befehl dafür.
sdk use java 17.0.8-oracle
Jetzt kannst du sehen, dass die Standardversion Java 17 ist
% java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)
Ich benutze diese fish Funktion die ich geschrieben habe:
function javav
set min_version 8
set max_version 99
set java_home_cmd '/usr/libexec/java_home 2>/dev/null --failfast --version'
if ! test (eval $java_home_cmd $argv)
echo "Version not found"
return 1
end
for current_version in (seq $min_version $max_version)
set path_to_remove (eval $java_home_cmd $current_version)
if ! test -z $path_to_remove
echo 'Entferne' $path_to_remove 'aus dem PATH'
set PATH (string match --invert $path_to_remove/bin $PATH)
end
end
echo 'Stelle Umgebung für Java ein' $argv
set -x JAVA_HOME (eval $java_home_cmd $argv)
set PATH $JAVA_HOME/bin $PATH
end
Es automatisiert im Wesentlichen den Schritt in dieser Antwort, ähnlich wie diese, kümmert sich aber auch um das Einstellen des PATH.
Einfach in .config/fish/functions/
einfügen und dann wie folgt verwenden:
javav 11 # Setzt auf Java 11
javav 16 # Setzt auf Java 16