GNU/Linux >> Tutoriels Linux >  >> Linux

Comment gérer plusieurs versions de Java avec jEnv sous Linux

En tant que développeur Java, vous souhaitez tester votre code avec différentes versions de Java. Ou vous vouliez simplement suivre les fonctionnalités d'une nouvelle version de Java. La configuration de différents environnements Java peut souvent être une tâche fastidieuse et décourageante. C'est là que les systèmes de gestion de versions sont utiles ! Aujourd'hui, nous allons discuter d'un tel gestionnaire de version appelé jEnv . jEnv est un outil en ligne de commande pour gérer plusieurs versions de Java sous Linux. C'est comme SDKMAN , mais uniquement pour Java. jEnv est un fork mis à jour de jenv , lui-même adapté de rbenv . jEnv est très utile pour développer des applications Java qui nécessitent une version Java exacte.

Utilisation de jEnv, un développeur ;

  • peut installer et gérer plusieurs installations Java côte à côte,
  • peut configurer l'installation de Java sur un répertoire global, un répertoire (spécifique à l'application) et même au niveau du shell (spécifique au shell),
  • peut basculer entre différentes versions de Java facilement et rapidement,
  • pas besoin de définir la variable d'environnement JAVA_HOME pour chaque version.

Installer Java

Veuillez noter que jEnv n'installera pas Java pour toi. Il ne gérera que les installations Java existantes. Vous devez installer Java à l'aide de votre gestionnaire de packages ou de tout autre moyen de votre choix. Je vais installer openjdk 13 et 14 sur mon système Ubuntu :

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

Si vous avez déjà installé Java, ignorez simplement cette étape.

Installer jEnv sur Linux

Git clone le référentiel jEnv à l'aide de la commande :

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

La commande ci-dessus clonera le contenu de jEnv dans un répertoire local nommé .jenv .

Ensuite, ajoutez jEnv à votre $PATH :

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

Ensuite, initialisez jEnv :

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

Enfin, mettez à jour les modifications que nous venons d'apporter dans ~/.bash_profile à l'aide de la commande.

$ source ~/.bash_profile

Si cela ne fonctionne pas pour une raison quelconque, utilisez simplement ~/.bashrc au lieu de ~/.bash_profile.

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

Si vous êtes sur Zsh shell, les commandes pour installer jEnv sont :

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

Vérifier l'installation de jEnv

Vérifions si jEnv est installé avec la commande :

$ jenv doctor

Exemple de résultat :

[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

Comme vous pouvez le constater, la sortie indique que la variable JAVA_HOME n'est pas encore définie et que jenv est correctement chargé. Ne faites pas attention aux autres erreurs. Ils disparaîtront après l'ajout de Java dans la section suivante.

Définissons maintenant la variable d'environnement JAVA_HOME à l'aide de la commande :

$ jenv enable-plugin export

Vous devez redémarrer votre session shell actuelle pour activer le plug-in d'exportation d'écho du plug-in d'exportation jenv activé. Pour redémarrer la session shell, exécutez :

$ exec $SHELL -l

Maintenant, exécutez à nouveau la commande "jenv doctor" et voyez ce qu'elle renvoie !

$ jenv doctor

Exemple de résultat :

[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

Fait! La variable JAVA_HOME sera automatiquement définie par jEnv en fonction de l'environnement Java actuellement actif.

Gérer plusieurs versions de Java avec jEnv sous Linux

L'exécution de jEnv sans aucune option affichera la section d'aide :

$ jenv

Exemple de résultat :

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

Ajouter différents environnements Java

Nous devons maintenant indiquer à jenv où se trouvent nos environnements Java.

Tout d'abord, ajoutons l'environnement openjdk-13 à l'aide de la commande :

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

Exemple de résultat :

openjdk64-13.0.3 added
13.0.3 added
13.0 added
13 added

Ensuite, ajoutez openjdk-14 à l'aide de la commande :

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

Vérifiez maintenant toutes les versions Java disponibles pour jenv en utilisant la commande :

$ jenv versions

Exemple de résultat :

* 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

Comme vous pouvez le voir dans la sortie ci-dessus, deux environnements Java, à savoir openjdk 13 et openjdk 14, sont actuellement gérés. Peu importe les autres nombres dans la sortie. Ce ne sont que des alias faisant référence à la même version.

Définir l'environnement Java global

Comme je l'ai déjà dit, jenv peut vous permettre de configurer l'installation de Java sur une base globale ou par répertoire/projet, ou par shell et de basculer entre eux sans changer la version globale.

Vérifions la version actuelle de Java :

$ 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)

Comme vous le voyez dans la sortie, la version globale actuelle a été définie sur openjdk-14.

Pour définir openjdk-13 comme version globale, exécutez :

$ jenv global openjdk64-13.0.3

Vérifiez maintenant la version Java :

$ 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)

Vous pouvez également simplement utiliser les numéros d'alias au lieu de la version complète comme ci-dessous :

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

Toutes ces trois commandes définiront openjdk-13 comme version globale.

Définir l'environnement Java local ou par répertoire

Parfois, vous souhaiterez peut-être définir l'environnement Java pour un projet spécifique, sans modifier la version globale.

Par exemple, les étapes suivantes définiront openjdk-14 comme version locale pour notre projet nommé "ostechnix-java", mais ne modifieront pas la version globale.

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

Maintenant, notre environnement local est openjdk-14, mais l'environnement Java global est openjdk-13. De même, vous pouvez définir plusieurs environnements Java différents pour chaque application. Allez simplement dans le répertoire du projet et définissez l'environnement Java souhaité de votre choix et commencez à créer ou à tester l'application. C'est aussi simple que ça !

Définir l'environnement Java spécifique au shell

Pour définir l'environnement Java pour la session shell en cours, exécutez :

$ jenv shell openjdk64-14.0.1

Openjdk-14 est la version Java utilisée dans ce shell particulier. Une fois que vous quittez la session shell en cours, la version Java précédente utilisée globalement entrera en vigueur.

Pas besoin de définir $JAVA_HOME !

Avez-vous remarqué que je n'ai jamais défini la variable $JAVA_HOME lors du passage à différentes versions de Java ? Non, même pas une fois ! Jenv s'en chargera et le configurera automatiquement pour vous en fonction de l'environnement Java dans lequel vous vous trouvez.

Vous pouvez afficher le paramètre actuel de la variable JAVA_HOME à l'aide de la commande :

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

Oubliez simplement comment définir la variable d'environnement JAVA_HOME et concentrez-vous sur votre développement.

Lire connexe :

  • Pyenv – La gestion des versions Python simplifiée

Linux
  1. Comment gérer le mot de passe du compte sous Linux

  2. Comment gérer les versions de NodeJS avec n dans Ubuntu 20.04

  3. Comment exécuter plusieurs versions de PHP avec Nginx sur Ubuntu ?

  4. Comment travailler avec plusieurs versions de Java sous Linux

  5. Comment gérer les postes de travail Linux avec des politiques

Comment gérer le stockage sous Linux avec LVM

Comment gérer vos mots de passe avec Enpass sous Linux

Comment gérer les versions de Nodejs avec n sous Linux

Comment installer plusieurs versions de Java sur CentOS 8

Comment gérer à distance un serveur Linux avec SSH

Comment gérer le stockage avec GParted Linux