1337 Stimmen

Wie setzt man die Standard-Java (JDK) Version auf macOS oder ändert sie?

Wie können Sie die Standardversion von Java auf einem Mac ändern?

6voto

joensson Punkte 1849

Zuvor habe ich Aliasnamen in der .zshrc verwendet, um einfach zwischen Versionen zu wechseln, aber heute benutze ich SDKMAN. SDKMAN kann auch das Setzen von Standard-Java für das System übernehmen sowie das Herunterladen und Installieren neuer Java-Versionen.

Sobald sdkman installiert ist, können Sie Befehle ähnlich wie mit dem nvm-Tool zum Verwalten von Node-Versionen ausführen.

sdk list java listet die verfügbaren Java-Versionen auf Ihrem System sowie online verfügbare Versionen zur Installation auf, einschließlich ihres Identifikators, den Sie in den Befehlen sdk use, sdk default und sdk install verwenden können.

z.B. um Amazon Corretto 11.0.8 zu installieren und zu fragen, ob es als neues Standard-Java festgelegt werden soll, führen Sie Folgendes aus: sdk install java 11.0.8-amzn

Ein Feature, das ich auch regelmäßig verwende, ist die Datei .sdkmanrc. Wenn Sie diese Datei in einem Verzeichnis auf Ihrem Rechner platzieren und den Befehl sdk env in diesem Verzeichnis ausführen, können Sie Tool-Versionen konfigurieren, die nur in diesem Verzeichnis verwendet werden. Es ist auch möglich, dass sdkman Tool-Versionen automatisch wechselt, indem Sie die Konfiguration sdkman_auto_env=true verwenden.

SDKMAN unterstützt auch die Verwaltung anderer Tools für die JVM wie Gradle, Kotlin, Maven und mehr.

Weitere Informationen finden Sie unter https://sdkman.io/usage#env

4voto

RoundPi Punkte 5549

Wenn Sie Fisch verwenden und Mac verwenden und zwischen JDKs wechseln möchten, dann funktioniert das Folgende für mich auf Mac:

Die Antwort von @kenglxn hat bei mir nicht funktioniert und ich habe herausgefunden, dass ich -g nicht gesetzt habe, was global ist!

Fügen Sie das Folgende unter ~/.config/fish/config.fish ein:

alias j8="jhome  -v 1.8.0_162"
alias j9="jhome  -v 9.0.1"

function jhome
    set -g -x JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end

funcsave jhome

Um herauszufinden, welche Version/Unterversion Sie installiert haben, können Sie Folgendes tun:

/usr/libexec/java_home -V                                                                              579ms  Wed 14 Feb 11:44:01 2018
Matching Java Virtual Machines (3):
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_162, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
    1.8.0_121, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

4voto

Suresh B B Punkte 1005

Dies wird Sie darüber informieren, wie Sie auf Ihrem MacOS-Gerät JAVA-Versionen umschalten können. Dies kann nützlich sein, wenn Sie mit Apps arbeiten, die nicht mit aktualisierten JAVA-Versionen funktionieren. Zum Beispiel funktionieren Anwendungen wie Cassandra nur mit JAVA-Version 8.

Zunächst müssen Sie sicherstellen, dass Sie mehrere JAVA-Versionen installiert haben.

Öffnen Sie ein neues Terminalfenster und geben Sie ein:

/usr/libexec/java_home -V

Ihre Ausgabe sollte wie folgt aussehen:

Passende Java-Virtual Machines (2):
11.0.1, x86_64: "Java SE 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
1.8.0_201, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home

Beachten Sie, dass zwei JDKs verfügbar sind. Wenn Sie die benötigte Java-Version nicht sehen, laden Sie diese hier herunter und installieren Sie sie (JDK 8 wird als 1.8 dargestellt). Sobald Sie das passende JDK installiert haben, wiederholen Sie diesen Schritt.

  1. Machen Sie sich Notizen zur gewünschten JDK-Version, zu Beispiel sind "11.0" und "1.8" die verfügbaren JDK-Versionen im obigen Beispiel.

  2. Wechseln Sie zur gewünschten Version. Wenn Sie zum Beispiel zu JDK 8 wechseln möchten, geben Sie die folgende Zeile ein:

    export JAVA_HOME=/usr/libexec/java_home -v 1.8

    Für 11.0, ersetzen Sie "1.8" durch "11.0"

  3. Überprüfen Sie Ihre JDK-Version, indem Sie im Terminal eingeben:

    java -version

Wenn Sie alle Schritte richtig befolgt haben, sollte die JDK-Version mit derjenigen übereinstimmen, die Sie im letzten Schritt angegeben haben.

  1. (Optional) Um dies zur Standard-JDK-Version zu machen, geben Sie im Terminal Folgendes ein:

    open ~/.bash_profile

Dann fügen Sie Ihr Terminal-Eingabe aus Schritt 3 dieser Datei hinzu:

ZUR JAVA-VERSION 8 WECHSELN

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Speichern und schließen Sie die Datei.

Fertig.

3voto

MonstroDev Punkte 190

Wenn Sie mehrere Versionen haben und etwas mit einer bestimmten Version ausführen möchten, verwenden Sie dieses Beispiel:

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar

2voto

Eric Punkte 18690

Hier ist, wie ich es auf meinem Linux (Ubuntu / Mint Mate) mache, ich denke, Mac kann es ähnlich machen.


Installieren & konfigurieren

Schritte:

  • [Grundlagen - Teil]
  • Lade das JDK (die .tgz Datei) manuell herunter.
  • Entpacke & benenne es ordnungsgemäß um, an einem geeigneten Speicherort.
    z.B. /mnt/star/program/java/jdk-1.8
  • Erstelle einen symbolischen Link, der später geändert wird, um die Java-Version zu wechseln.
    z.B. ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    Somit ist /mnt/star/program/java/java der symbolische Link.
  • Setze JAVA_HOME in einem Startskript.
    Könnte eine Datei wie /etc/profile.d/eric.sh verwenden, oder einfach ~/.bashrc.
    z.B. JAVA_HOME=/mnt/star/program/java/java
  • Öffne dann eine neue Bash-Shell. java -version sollte die Java-Version ausgeben.
  • [Mehrere Versionen - Teil]
  • Lade & installiere weitere Java-Versionen bei Bedarf, ähnlich wie oben beschrieben.
    z.B.
    /mnt/star/program/java/jdk-11
  • [Wechseln - Teil]
  • Definiere in ~/.bashrc eine Variable für verschiedene Java-Versionen.
    z.B.
    _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
    _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
    # Verzeichnis der Standardversion,
    _E_JAVA_HOME_D=$_E_JAVA_HOME_8
  • Definiere in ~/.bashrc ein Befehl zum Wechseln der Java-Version.
    z.B.
    ## Java-Version wechseln,
    alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
    alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
    # Standard-Java-Version,
    alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
    alias jv="java -version"
  • In der Konsole source ~/.bashrc, um die Änderungen wirksam werden zu lassen.
  • Dann kann man mit den definierten Befehlen wechseln.

Befehle - aus der obigen Konfiguration

Befehle:

  • jv11
    Wechsle zu Java 11
  • jv8
    Wechsle zu Java 8
  • jvd
    Wechsle zur Standard-Java-Version, die durch _E_JAVA_HOME_D oben definiert ist.
  • jv
    Zeige die Java-Version an.

Beispiel-Ausgabe:

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
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)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ 

Mechanismus

  • Es wechselt, indem der symbolische Link geändert wird, der als JAVA_HOME verwendet wird.

Tipps

  • Auf meinem Rechner, wenn ich das JDK manuell installiere, behalte ich die Nebenversion bei, dann erstelle ich einen symbolischen Link mit der Hauptversion, aber ohne die Nebenversion.
    z.B.
    // das ist das tatsächliche Verzeichnis,
    jdk1.8.0_191

    // das ist ein symbolischer Link zu jdk1.8.0_191
    jdk-8

    // das ist ein symbolischer Link zu jdk-8 oder jdk-11
    java

  • Ich definiere Befehlaliasse in ~/.bashrc, aber definiere Variablen in einer separaten Datei.
    Ich verwende ~/.eric_var, um die Variablen zu definieren, und ~/.bashrc wird sie einbinden (z.B. source $HOME/.eric_var).

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