GNU/Linux >> Linux Esercitazione >  >> Linux

Come gestire più versioni Java con jEnv su Linux

Come sviluppatore Java, vorresti testare il tuo codice con diverse versioni Java. Oppure volevi semplicemente stare al passo con le funzionalità di una nuova versione di Java. L'impostazione di diversi ambienti Java spesso può essere un'operazione dispendiosa in termini di tempo e scoraggiante. È qui che i sistemi di gestione delle versioni tornano utili! Oggi parleremo di uno di questi gestori di versioni chiamato jEnv . jEnv è uno strumento da riga di comando per gestire più versioni java su Linux. È come SDKMAN , ma solo per Java. jEnv è un fork aggiornato di jenv , che a sua volta è adattato da rbenv . jEnv è abbastanza utile per lo sviluppo di applicazioni java che richiedono una versione Java esatta.

Utilizzando jEnv, uno sviluppatore;

  • può installare e gestire diverse installazioni Java affiancate,
  • può configurare l'installazione di Java su globale, directory (specifica dell'applicazione) e anche per livello di shell (specifica della shell),
  • può passare da una versione all'altra di java facilmente e rapidamente,
  • non è necessario impostare la variabile di ambiente JAVA_HOME per ogni versione.

Installa Java

Tieni presente che jEnv non installerà Java per te. Gestirà solo le installazioni Java esistenti. Dovresti installare Java usando il tuo gestore di pacchetti o in qualsiasi altro modo a tua scelta. Installerò openjdk 13 e 14 sul mio sistema Ubuntu:

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

Se hai già installato Java, ignora questo passaggio.

Installa jEnv su Linux

Git clone jEnv repository usando il comando:

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

Il comando precedente clonerà il contenuto di jEnv in una directory locale denominata .jenv .

Quindi, aggiungi jEnv al tuo $PATH:

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

Quindi, inizializza jEnv:

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

Infine, aggiorna le modifiche appena apportate in ~/.bash_profile usando il comando.

$ source ~/.bash_profile

Se non funziona per qualsiasi motivo, usa semplicemente ~/.bashrc invece di ~/.bash_profile.

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

Se sei su Zsh shell, i comandi per installare jEnv sono:

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

Verifica installazione jEnv

Verifichiamo se jEnv è installato con il comando:

$ jenv doctor

Risultato di esempio:

[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

Come puoi vedere, l'output dice che la variabile JAVA_HOME non è ancora impostata e jenv è stato caricato correttamente. Non preoccuparti degli altri errori. Saranno spariti dopo aver aggiunto Java nella prossima sezione.

Ora impostiamo la variabile d'ambiente JAVA_HOME usando il comando:

$ jenv enable-plugin export

Dovresti riavviare la sessione della shell corrente per attivare il plugin di esportazione jenv echo export plugin attivato. Per riavviare la sessione della shell, esegui:

$ exec $SHELL -l

Ora, esegui di nuovo il comando "jenv doctor" e guarda cosa restituisce!

$ jenv doctor

Risultato di esempio:

[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

Fatto! La variabile JAVA_HOME verrà impostata automaticamente da jEnv a seconda dell'ambiente Java attualmente attivo.

Gestire più versioni Java con jEnv su Linux

L'esecuzione di jEnv senza alcuna opzione visualizzerà la sezione della guida:

$ jenv

Risultato di esempio:

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

Aggiungi diversi ambienti Java

Ora dobbiamo dire a jenv dove si trovano i nostri ambienti Java.

Per prima cosa, aggiungiamo l'ambiente openjdk-13 usando il comando:

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

Risultato di esempio:

openjdk64-13.0.3 added
13.0.3 added
13.0 added
13 added

Quindi, aggiungi openjdk-14 usando il comando:

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

Ora controlla tutte le versioni Java disponibili su jenv usando il comando:

$ jenv versions

Risultato di esempio:

* 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

Come puoi vedere nell'output sopra, sono attualmente gestiti due ambienti Java, ovvero openjdk 13 e openjdk 14. Non importa gli altri numeri nell'output. Sono solo alias che si riferiscono alla stessa versione.

Imposta l'ambiente Java globale

Come ho già detto, jenv ti consente di configurare l'installazione di java su globale o per directory/progetto o per shell e passare da una all'altra senza modificare la versione globale.

Controlliamo la versione corrente di 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)

Come puoi vedere nell'output, la versione globale corrente è stata impostata su openjdk-14.

Per impostare openjdk-13 come versione globale, esegui:

$ jenv global openjdk64-13.0.3

Ora controlla la versione 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)

Puoi anche usare semplicemente i numeri alias invece della versione completa come di seguito:

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

Tutti e tre questi comandi imposteranno openjdk-13 come versione globale.

Imposta ambiente Java locale o per directory

A volte, potresti voler impostare l'ambiente java per un progetto specifico, senza modificare la versione globale.

Ad esempio, i seguenti passaggi imposteranno openjdk-14 come versione locale per il nostro progetto denominato "otechnix-java", ma non modificheranno la versione globale.

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

Ora il nostro ambiente locale è openjdk-14, ma l'ambiente java globale è openjdk-13. Allo stesso modo è possibile impostare più ambienti Java diversi per ciascuna applicazione. Basta andare nella directory del progetto e impostare l'ambiente Java desiderato e iniziare a creare o testare l'applicazione. È così semplice!

Imposta l'ambiente Java specifico della shell

Per impostare l'ambiente Java per la sessione della shell corrente, eseguire:

$ jenv shell openjdk64-14.0.1

Openjdk-14 è la versione Java utilizzata in questa particolare shell. Una volta che esci dalla sessione della shell corrente, la precedente versione Java utilizzata a livello globale entrerà in vigore.

Non c'è bisogno di impostare $JAVA_HOME!

Hai notato che non ho mai impostato la variabile $JAVA_HOME quando passo a versioni Java diverse? No, nemmeno una volta! Jenv se ne occuperà e lo imposterà automaticamente per te a seconda dell'ambiente Java in cui ti trovi.

Puoi visualizzare l'impostazione corrente della variabile JAVA_HOME usando il comando:

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

Dimentica come impostare la variabile d'ambiente JAVA_HOME e concentrati sul tuo sviluppo.

Lettura correlata:

  • Pyenv – Gestione della versione Python resa più semplice

Linux
  1. Come installare Java su Linux

  2. Come gestire la password dell'account in Linux

  3. Come gestire più versioni di Python con Pyenv su Linux

  4. Come gestire gli utenti con useradd in Linux

  5. Come lavorare con più versioni Java sotto Linux

Come gestire lo storage su Linux con LVM

Come gestire le tue password con Enpass su Linux

Come gestire le versioni di Nodejs con n in Linux

Come installare più versioni Java su CentOS 8

Come gestire in remoto un server Linux con SSH

Come gestire l'archiviazione con GParted Linux