Articles

MungingData

jenv semplifica l’esecuzione di più versioni di Java su un computer Mac. Rende anche più facile passare senza problemi tra le versioni Java quando si passa progetti.

L’esecuzione di più versioni Java è importante per gli sviluppatori Android e Apache Spark. Gli sviluppatori di Spark dovrebbero utilizzare Java 8 per i progetti Spark 2 e Java 11 per i progetti Spark 3, ad esempio.

Questo post del blog mostra come ottenere l’installazione di jenv sul tuo computer e come utilizzare i comandi importanti.

jenv setup

Installa jenv conbrew install jenv. Questo è un comando Homebrew.

jenv utilizza il modello di progettazione shim per instradare i comandi alla versione Java appropriata. Esegui questi comandi per aggiornare il tuoPATH:

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

Riavvia il tuo terminale, eseguiecho $PATH e verifica che l’output contenga.jenv percorsi anteposti alle directory dei PERCORSI standard. Ecco l’output sulla mia macchina /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

Installa Java 8

Ecco l’ultimo comando per installare Java 8:brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 utilizzato per lavoro, ma ora restituisce Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 utilizzato anche per lavoro, ma ora restituisce Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

una Volta che Java è scaricato, abbiamo bisogno di aggiungere manualmente jenv. Elenca le macchine virtuali Java con ls -1 /Library/Java/JavaVirtualMachines.

Aggiungi Java 8 a jenv con jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

Imposta la versione Java globale sul tuo computer con jenv global openjdk64-1.8.0.265. Il comando esatto sulla tua macchina potrebbe essere qualcosa di leggermente diverso come jenv global openjdk64-1.8.0.272. Trova il nome esatto della versione con jenv versions.

Verificare che i comandijavac -version ejava -version funzionino.

Imposta la versione Java globale

I Mac sono dotati di Java preinstallato. È sempre bene evitare di utilizzare versioni del linguaggio di programmazione installate dal sistema (si applica anche a Python e Ruby). jenv rende facile evitare di utilizzare il sistema Java.

Imposta la versione globale di Java su Java 8 con jenv global openjdk64-1.8.0.265.

Questo comando scrive semplicemente la versione nel file /Users/powers/.jenv/version. Digita cat /Users/powers/.jenv/version per vedere che è solo un file con una singola riga

openjdk64-1.8.0.272

Tutti i comandi Java verranno indirizzati a Java 8 ora che la versione globale è impostata. Questo farà in modo di evitare di colpire la versione Java del sistema.

Imposta JAVA_HOME

Molte librerie Java dipendono dal set di variabili di ambienteJAVA_HOME. Imposta la variabile d’ambiente eseguendo questi comandi:

jenv enable-plugin exportexec $SHELL -l

Eseguiecho $JAVA_HOME e verifica che restituisca qualcosa come/Users/powers/.jenv/versions/openjdk64-1.8.0.272. Ora qualsiasi libreria che sta cercando l’ambienteJAVA_HOME da impostare non verrà eliminata.

Eseguirejenv doctor per confermare la configurazione è buona. Dovresti ottenere l’output in questo modo:

 JAVA_HOME variable probably set by jenv PROMPT Java binaries in path are jenv shims Jenv is correctly loaded

Installa Java 11

Ecco il comando per installare Java 11: brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

Ricorda che le versioni Java devono essere aggiunte manualmente a jenv. Elenca le macchine virtuali Java con ls -1 /Library/Java/JavaVirtualMachines.

Aggiungi Java 11 a jenv con jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

Il comandojenv versionsdovrebbe ora emettere questo:

 system 1.8 1.8.0.272 11 11.0 11.0.9* openjdk64-1.8.0.272 (set by /Users/powers/.jenv/version) openjdk64-11.0.9

Configurare Maven

which mvn restituisce/usr/local/bin/mvn, che è la versione di sistema di Maven. Simile a Java, non vogliamo mai eseguire comandi usando il sistema Maven. Usiamo jenv per ottenere una versione diversa di Maven.

Abilitare il plugin jenv Maven conjenv enable-plugin maven e quindi eseguirewhich mvn per verificare che i comandimvn vengano acquisiti correttamente da uno shim jenv. Il comandowhich mvn dovrebbe restituire qualcosa come/Users/powers/.jenv/shims/mvn.

È possibile verificare che l’installazione di Maven funzioni correttamente clonando un progetto ed eseguendo la suite di test. Clonare il progetto JavaSpark con il comandogit clone [email protected]:MrPowers/JavaSpark.git.

cdnella directory del progetto ed eseguire la suite di test con mvn test.

Puoi digitare mvn -v per vedere la versione di Maven che viene utilizzata. La mia macchina sta usando Maven 3.6.3 con Java 8.

Puoi anche clonare il repository deequ e verificare chemvn test stia lavorando anche su quel repository.

Impostazione della versione Java locale per i progetti

Utilizzare il comandojenv local openjdk64-11.0.9 per impostare un determinato progetto in modo che utilizzi Java 11 per impostazione predefinita.

Questo aggiungerà un file.java-version nella cartella del progetto principale. Ecco un esempio.

È possibile clonare il repository delta-examples congit clone [email protected]:MrPowers/delta-examples.git, cd nella directory ed eseguirejenv versions per verificare che il progetto stia automaticamente utilizzando Java 11.

Ecco l’outputjenv versions dalla directory principale del progetto delta-examples:

 system 1.8 1.8.0.272 11 11.0 11.0.9 openjdk64-1.8.0.272* openjdk64-11.0.9 (set by /Users/powers/Documents/code/my_apps/delta-examples/.java-version)

la capacità di jenv di cambiare automaticamente le versioni Java per diversi progetti è abbastanza conveniente. Non è necessario pensare di impostare manualmente la versione Java quando si modificano i progetti.

Altri modi per cambiare le versioni Java

Il progetto AdoptOpenJDK fornisce indicazioni su come passare manualmente tra le versioni Java se non si desidera utilizzare jenv. Ecco la funzione che forniscono:

jdk() { version=$1 export JAVA_HOME=$(/usr/libexec/java_home -v"$version"); java -version }

Il passaggio manuale è possibile, ma chi vuole sprecare energia mentale pensando alle versioni Java ogni volta che cambia un progetto?

Passi successivi

jenv ti aiuterà a gestire Java sul tuo Mac, anche se hai solo bisogno di usare una singola versione.

Gestire diverse versioni Java su una determinata macchina è stato un enorme dolore prima che arrivasse jenv. Ora, è sufficiente eseguire alcuni comandi e la macchina può essere configurata per eseguire qualsiasi versione Java. jenv rende facile evitare di utilizzare accidentalmente i pacchetti Java installati dal sistema.

jenv ha costruito in plugin per SBT, Scala, Groovy, e altro ancora. Assicurati di abilitare i plugin rilevanti per i tuoi flussi di lavoro.