GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwalten Sie mehrere Java-Versionen mit jEnv unter Linux

Als Java-Entwickler möchten Sie Ihren Code mit verschiedenen Java-Versionen testen. Oder Sie wollten einfach mit den Features einer neuen Java-Version Schritt halten. Das Einrichten verschiedener Java-Umgebungen kann oft eine zeitaufwändige und entmutigende Aufgabe sein. Hier kommen Versionsverwaltungssysteme ins Spiel! Heute werden wir einen solchen Versionsmanager namens jEnv besprechen . jEnv ist ein Befehlszeilentool zum Verwalten mehrerer Java-Versionen unter Linux. Es ist wie SDKMAN , aber nur für Java. jEnv ist ein aktualisierter Fork von jenv , das selbst von rbenv übernommen wurde . jEnv ist sehr nützlich für die Entwicklung von Java-Anwendungen, die eine exakte Java-Version erfordern.

Mit jEnv, einem Entwickler;

  • kann mehrere Java-Installationen nebeneinander installieren und verwalten,
  • kann die Java-Installation auf globaler Ebene, Verzeichnisebene (anwendungsspezifisch) und sogar pro Shell-Ebene (shellspezifisch) einrichten
  • kann einfach und schnell zwischen verschiedenen Java-Versionen wechseln,
  • Sie müssen die Umgebungsvariable JAVA_HOME nicht für jede Version festlegen.

Installieren Sie Java

Bitte beachten Sie, dass jEnv kein Java installiert für dich. Es verwaltet nur die vorhandenen Java-Installationen. Sie sollten Java mit Ihrem Paketmanager oder auf andere Weise Ihrer Wahl installieren. Ich werde openjdk 13 und 14 auf meinem Ubuntu-System installieren:

$ sudo apt install openjdk-13-jdk
$ sudo apt install openjdk-14-jdk

Wenn Sie Java bereits installiert haben, ignorieren Sie diesen Schritt einfach.

Installieren Sie jEnv unter Linux

Git klonen Sie das jEnv-Repository mit dem Befehl:

$ git clone https://github.com/jenv/jenv.git ~/.jenv

Der obige Befehl klont den Inhalt von jEnv in ein lokales Verzeichnis namens .jenv .

Fügen Sie dann jEnv zu Ihrem $PATH:

hinzu
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile

Als nächstes initialisieren Sie jEnv:

$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile

Aktualisieren Sie schließlich die Änderungen, die wir gerade in ~/.bash_profile vorgenommen haben, mit dem Befehl.

$ source ~/.bash_profile

Wenn es aus irgendeinem Grund nicht funktioniert, verwenden Sie einfach ~/.bashrc statt ~/.bash_profile.

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(jenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

Wenn Sie auf Zsh sind Shell sind die Befehle zum Installieren von jEnv:

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(jenv init -)"' >> ~/.zshrc

Überprüfen Sie die jEnv-Installation

Lassen Sie uns mit dem Befehl überprüfen, ob jEnv installiert ist:

$ jenv doctor

Beispielausgabe:

[OK]	No JAVA_HOME set
[ERROR]	Java binary in path is not in the jenv shims.
[ERROR]	Please check your path, or try using /path/to/java/home is not a valid path to java installation.
	PATH : /home/ostechnix/.jenv/libexec:/home/ostechnix/.jenv/shims:/home/ostechnix/.jenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
[OK]	Jenv is correctly loaded

Wie Sie sehen können, sagt die Ausgabe, dass die Variable JAVA_HOME noch nicht gesetzt ist und jenv korrekt geladen ist. Kümmern Sie sich nicht um die anderen Fehler. Sie werden verschwinden, nachdem wir im nächsten Abschnitt Java hinzugefügt haben.

Lassen Sie uns nun die Umgebungsvariable JAVA_HOME mit dem Befehl:

festlegen
$ jenv enable-plugin export

Sie sollten Ihre aktuelle Shell-Sitzung neu starten, um das jenv-Export-Plugin zu aktivieren. Echo-Export-Plugin aktiviert. Um die Shell-Sitzung neu zu starten, führen Sie Folgendes aus:

$ exec $SHELL -l

Führen Sie jetzt den Befehl "jenv doctor" erneut aus und sehen Sie, was er zurückgibt!

$ jenv doctor

Beispielausgabe:

[OK]	JAVA_HOME variable probably set by jenv PROMPT
[ERROR]	Java binary in path is not in the jenv shims.
[ERROR]	Please check your path, or try using /path/to/java/home is not a valid path to java installation.
	PATH : /home/ostechnix/.jenv/libexec:/home/ostechnix/.jenv/shims:/home/ostechnix/.jenv/bin:/home/ostechnix/.jenv/shims:/home/ostechnix/.jenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
[OK]	Jenv is correctly loaded

Erledigt! Die JAVA_HOME-Variable wird automatisch von jEnv abhängig von der aktuell aktiven Java-Umgebung gesetzt.

Mehrere Java-Versionen mit jEnv unter Linux verwalten

Wenn Sie jEnv ohne Optionen ausführen, wird der Hilfebereich angezeigt:

$ jenv

Beispielausgabe:

jenv 0.5.3-2-g78dbd7f
Usage: jenv <command> [<args>]

Some useful jenv commands are:
   commands    List all available jenv commands
   local       Set or show the local application-specific Java version
   global      Set or show the global Java version
   shell       Set or show the shell-specific Java version
   rehash      Rehash jenv shims (run this after installing executables)
   version     Show the current Java version and its origin
   versions    List all Java versions available to jenv
   which       Display the full path to an executable
   whence      List all Java versions that contain the given executable
   add         Add JDK into jenv. A alias name will be generated by parsing "java -version"

See `jenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/jenv/jenv/blob/master/README.md

Verschiedene Java-Umgebungen hinzufügen

Jetzt müssen wir jenv mitteilen, wo sich unsere Java-Umgebungen befinden.

Lassen Sie uns zuerst die openjdk-13-Umgebung mit dem Befehl hinzufügen:

$ jenv add /usr/lib/jvm/java-13-openjdk-amd64/

Beispielausgabe:

openjdk64-13.0.3 added
13.0.3 added
13.0 added
13 added

Fügen Sie dann openjdk-14 mit dem Befehl hinzu:

$ jenv add /usr/lib/jvm/java-14-openjdk-amd64/
openjdk64-14.0.1 added
14.0.1 added
14.0 added
14 added

Überprüfen Sie nun alle verfügbaren Java-Versionen auf jenv mit dem Befehl:

$ jenv versions

Beispielausgabe:

* system (set by /home/ostechnix/.jenv/version)
  13
  13.0
  13.0.3
  14
  14.0
  14.0.1
  openjdk64-13.0.3
  openjdk64-14.0.1

Wie Sie in der obigen Ausgabe sehen können, werden derzeit zwei Java-Umgebungen verwaltet, nämlich openjdk 13 und openjdk 14. Kümmern Sie sich nicht um die anderen Zahlen in der Ausgabe. Sie sind nur Aliase, die sich auf dieselbe Version beziehen.

Globale Java-Umgebung festlegen

Wie ich bereits sagte, kann jenv es Ihnen ermöglichen, die Java-Installation global oder pro Verzeichnis/Projekt oder pro Shell einzurichten und zwischen ihnen zu wechseln, ohne die globale Version zu ändern.

Lassen Sie uns die aktuelle Java-Version überprüfen:

$ java --version
openjdk 14.0.1 2020-04-14
OpenJDK Runtime Environment (build 14.0.1+7-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 14.0.1+7-Ubuntu-1ubuntu1, mixed mode, sharing)

Wie Sie in der Ausgabe sehen, wurde die aktuelle globale Version auf openjdk-14 gesetzt.

Führen Sie Folgendes aus, um openjdk-13 als globale Version festzulegen:

$ jenv global openjdk64-13.0.3

Überprüfen Sie nun die Java-Version:

$ java --version
openjdk 13.0.3 2020-04-14
OpenJDK Runtime Environment (build 13.0.3+3-Ubuntu-1ubuntu2)
OpenJDK 64-Bit Server VM (build 13.0.3+3-Ubuntu-1ubuntu2, mixed mode)

Sie können auch einfach die Alias-Nummern anstelle der Vollversion verwenden, wie unten:

$ jenv global 13
$ jenv global 13.0
$ jenv global 13.0.3

Alle diese drei Befehle setzen openjdk-13 als globale Version.

Lokale oder verzeichnisspezifische Java-Umgebung festlegen

Manchmal möchten Sie vielleicht die Java-Umgebung für ein bestimmtes Projekt festlegen, ohne die globale Version zu ändern.

Beispielsweise legen die folgenden Schritte openjdk-14 als lokale Version für unser Projekt namens "ostechnix-java" fest, ändern aber nicht die globale Version.

$ mkdir ostechnix-java
$ cd ostechnix-java
$ jenv local openjdk64-14.0.1

Jetzt ist unsere lokale Umgebung openjdk-14, aber die globale Java-Umgebung ist openjdk-13. Ebenso können Sie für jede Anwendung mehrere verschiedene Java-Umgebungen festlegen. Gehen Sie einfach in das Verzeichnis des Projekts und stellen Sie die gewünschte Java-Umgebung Ihrer Wahl ein und beginnen Sie mit dem Erstellen oder Testen der Anwendung. So einfach ist das!

Shell-spezifische Java-Umgebung festlegen

Führen Sie Folgendes aus, um die Java-Umgebung für die aktuelle Shell-Sitzung festzulegen:

$ jenv shell openjdk64-14.0.1

Openjdk-14 ist die Java-Version, die in dieser speziellen Shell verwendet wird. Sobald Sie die aktuelle Shell-Session verlassen, tritt die vorher global verwendete Java-Version in Kraft.

$JAVA_HOME muss nicht gesetzt werden!

Ist Ihnen aufgefallen, dass ich die Variable $JAVA_HOME beim Wechsel zu verschiedenen Java-Versionen nie gesetzt habe? Nein, nicht einmal! Jenv kümmert sich darum und richtet es automatisch für Sie ein, abhängig von der Java-Umgebung, in der Sie sich befinden.

Sie können die aktuelle Einstellung der JAVA_HOME-Variablen mit folgendem Befehl anzeigen:

$ echo $JAVA_HOME
/home/ostechnix/.jenv/versions/openjdk64-13.0.3

Vergessen Sie einfach, wie Sie die Umgebungsvariable JAVA_HOME setzen und konzentrieren Sie sich auf Ihre Entwicklung.

Verwandte Lektüre:

  • Pyenv – Python-Versionsverwaltung einfacher gemacht

Linux
  1. So installieren Sie Java unter Linux

  2. So verwalten Sie mehrere Python-Versionen mit Pyenv unter Linux

  3. So verwalten Sie Benutzer mit useradd unter Linux

  4. So installieren / wechseln Sie zwischen mehreren Java-Versionen mit SDKMAN

  5. So fügen Sie mehrere JAR-Dateien im Klassenpfad unter Linux hinzu

So verwalten Sie Speicher unter Linux mit LVM

So verwalten Sie Ihre Passwörter mit Enpass unter Linux

So verwalten Sie Nodejs-Versionen mit n in Linux

So installieren Sie mehrere Java-Versionen unter CentOS 8

So verwalten Sie einen Linux-Server mit SSH aus der Ferne

So verwalten Sie Speicher mit GParted Linux