JVM-Versionsmanager

Lesezeit: 4 Minuten

Benutzeravatar von luacassus
Lukas

Gibt es Ruby-Versionsmanager Äquivalent für die Java-Welt?

Ich suche nach einem Tool, mit dem ich einfach neue JVMs herunterladen und installieren und zwischen ihnen wechseln kann. Zum Beispiel:

jvm install <version>
jvm list //will list installed JVMs on my system
jvm use jdk1.6 //will switch my env to jdk 1.6 version, etc.

  • Wie Jocull vorgeschlagen hatte, finde ich sdkman den besten Java-Versionsmanager für meine Zwecke sdkman.io

    – 0x90

    27. November 2020 um 5:30 Uhr


http://www.jenv.be/ ermöglicht diese Art der Steuerung.

  • Dies scheint Windows nicht zu unterstützen, oder doch?

    – SikoSoft

    27. November 2019 um 8:31 Uhr

  • Gleiches gilt für sdkman, beide werden nur mit wsl, cygwin usw. unterstützt, also keine native Windows-Unterstützung!

    – Verhexung

    25. April um 18:58 Uhr

  • Der Vollständigkeit halber erfüllt jenv nicht die Anforderung, JVMs einfach zu installieren.

    – Brad

    6. Oktober um 16:46 Uhr

SDKMAN! ist ein ähnliches Tool für das Java-Ökosystem. Unterstützt verschiedene Java-Versionen, Scala, Clojure, Kotlin, Groovy und Build-Tools wie Maven und Gradle.

Funktioniert auf Mac und Linux, mit einigen Erwähnungen der Unterstützung für Windows, je nachdem, wie sehr Sie bereit sind, es zu versuchen 🙂

Wenn Sie Ubuntu verwenden, können Sie per Befehl angeben, welche JVM Sie verwenden möchten (funktioniert nur für JVM, die von apt-get oder aptitude installiert wurde).

sudo update-alternatives --config java

Oder durch Setzen von JAVA_HOME. Hier ist eine gute Anleitung:

http://vietpad.sourceforge.net/javaonlinex.html

Der Vollständigkeit halber noch zwei weitere jabba (deren Autor ich bin; geschrieben in Go und entworfen nach nvm/gvm/rvm) und jenv (Nicht zu verwechseln mit jenv.be; unterstützt keine Installation von Oracle, kann aber von einer benutzerdefinierten Zip-Datei installieren).

Benutzeravatar von djangofan
djangofan

Wenn Sie bei JVMs zwischen ihnen wechseln müssen, müssen Sie nur eine Batchdatei (oder ein Powershell-Skript) verwenden, um den Klassenpfad und den JVM-Pfad zu verwalten. Sie müssen sich nicht auf den standardmäßigen JVM-Pfad des Systems verlassen und erlauben Ihrer App stattdessen, auf eine beliebige JVM zu verweisen, indem Sie den Klassenpfad und die JVM-Pfadumgebung in der Shell ändern, auf der die JVM ausgeführt wird.

Für Programme, die den Java-Standort aus der Registrierung erhalten, könnten Sie theoretisch auch ein Batch-Skript verwenden, um diesen zu aktualisieren.

In dieser Hinsicht ist Java viel einfacher als “Ruby Version Manager”.

Da es (noch) nicht in der Liste der Möglichkeiten steht, gibt es auch asdf.
asdf bietet nicht nur Versionsverwaltung für Java, sondern auch Plugins für ~400 verschiedene Sprachen und Tools Standardmäßig finden Sie mehr unter githuboder erstelle dein eigenes.

Hier ist ein Beispiel, wie man eine neue Installation einrichtet (Sie können auch install Fertigstellung Sie müssen also nicht erst die Versionen auflisten). Das Java-Plugin wird hinzugefügt, eine bestimmte Version (es gibt Versionen für adoptopenjdk, corretto, dragonwell, graalvm, liberica, mandrel, microsoft, openjdk, oracle, sapmachine, semeru, temurin, trava, zulu) installiert und konfiguriert ist, um die globale (oder lokale Version) zu verwenden:

asdf plugin-add java          # Add java Plugin
asdf list-all java            # List all available java versions
asdf install java openjdk-18  # Install specific jdk version
asdf install java openjdk-17  # Install another jdk version
asdf global java openjdk-18   # Set the global jdk version
asdf local java openjdk-17    # Set the local version for calls from the current directory

asdf verwendet eine Datei in $HOME/.tool-versions um die global ausgewählte Version zu konfigurieren. Wenn Sie ein Tool in einem Verzeichnis aufrufen, das eine .tool-versions Datei mit einer anderen Version, die verwendet wird (definiert mit asdf local …).

Benutzeravatar von djangofan
djangofan

Der Trick besteht darin, update-java-alternatives (aus dem Paket java-common) zu verwenden. Der Befehl update-alternatives aktualisiert nicht alle symbolischen Links für verschiedene ausführbare Java /bin-Dateien, weshalb update-java-alternatives besser ist.

Um also für OpenJDK 6 bis 7 zu gehen, verwenden Sie update-java-alternatives -l um eine Liste von Java-Alternativen zu erhalten und dann zu verwenden sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 um das JDK zu wechseln.

ACHTUNG: Der obige Befehl kann die folgenden Fehler auslösen,

update-alternatives: error: no alternatives for mozilla-javaplugin.so.
update-java-alternatives: plugin alternative does not exist: 
  /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so

Dies liegt daran, dass das openjdk-Plugin standardmäßig nicht installiert ist. Lauf zu beheben sudo apt-get install icedtea-7-plugin und führen Sie update-java-alternatives erneut aus.

1435870cookie-checkJVM-Versionsmanager

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy