MungingData
jenv facilite l’exécution de plusieurs versions de Java sur un ordinateur Mac. Il permet également de basculer facilement entre les versions Java lorsque vous changez de projet.
L’exécution de plusieurs versions Java est importante pour les développeurs Android et Apache Spark. Les développeurs Spark doivent utiliser Java 8 pour les projets Spark 2 et Java 11 pour les projets Spark 3 par exemple.
Cet article de blog vous montre comment configurer jenv sur votre ordinateur et comment utiliser les commandes importantes.
configuration de jenv
Installez jenv avec brew install jenv
. C’est une commande Homebrew.
jenv utilise le modèle de conception shim pour acheminer les commandes vers la version Java appropriée. Exécutez ces commandes pour mettre à jour votre PATH
:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrcecho 'eval "$(jenv init -)"' >> ~/.zshrc
Redémarrez votre Terminal, exécutez echo $PATH
et vérifiez que la sortie contient des chemins .jenv
qui sont ajoutés au début des répertoires de CHEMINS standard. Voici la sortie sur ma machine /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
.
Installer Java 8
Voici la dernière commande pour installer Java 8 : brew cask install adoptopenjdk/openjdk/adoptopenjdk8
.
brew cask install adoptopenjdk8
utilisé pour fonctionner, mais renvoie maintenant Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.
brew cask install caskroom/versions/adoptopenjdk8
également utilisé pour fonctionner, mais renvoie maintenant Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.
Une fois Java téléchargé, nous devons l’ajouter manuellement à jenv. Répertoriez les machines virtuelles Java avec ls -1 /Library/Java/JavaVirtualMachines
.
Ajoutez Java 8 à jenv avec jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/
.
Définissez la version Java globale sur votre ordinateur avec jenv global openjdk64-1.8.0.265
. La commande exacte sur votre machine peut être quelque chose de légèrement différent comme jenv global openjdk64-1.8.0.272
. Trouvez le nom exact de la version avec jenv versions
.
Vérifiez que les commandes javac -version
et java -version
fonctionnent.
Définir la version Java globale
Les Mac sont livrés avec Java préinstallé. Il est toujours bon d’éviter d’utiliser des versions de langage de programmation installées par le système (s’applique également à Python et Ruby). jenv permet d’éviter facilement d’utiliser le système Java.
Définissez la version Java globale sur Java 8 avec jenv global openjdk64-1.8.0.265
.
Cette commande écrit simplement la version dans le fichier /Users/powers/.jenv/version
. Tapez cat /Users/powers/.jenv/version
pour voir que c’est juste un fichier avec une seule ligne
openjdk64-1.8.0.272
Toutes les commandes Java seront acheminées vers Java 8 maintenant que la version globale est définie. Cela nous évitera d’atteindre la version Java du système.
Set JAVA_HOME
De nombreuses bibliothèques Java dépendent d’un ensemble de variables d’environnement JAVA_HOME
. Définissez la variable d’environnement en exécutant ces commandes :
jenv enable-plugin exportexec $SHELL -l
Exécutez echo $JAVA_HOME
et vérifiez qu’elle renvoie quelque chose comme /Users/powers/.jenv/versions/openjdk64-1.8.0.272
. Maintenant, toute bibliothèque qui recherche l’environnement JAVA_HOME
à définir ne se trompera pas.
Exécutez jenv doctor
pour confirmer que votre configuration est bonne. Vous devriez obtenir une sortie comme ceci :
JAVA_HOME variable probably set by jenv PROMPT Java binaries in path are jenv shims Jenv is correctly loaded
Installer Java 11
Voici la commande pour installer Java 11 : brew cask install adoptopenjdk/openjdk/adoptopenjdk11
.
Rappelez-vous que les versions Java doivent être ajoutées manuellement à jenv. Répertoriez les machines virtuelles Java avec ls -1 /Library/Java/JavaVirtualMachines
.
Ajoutez Java 11 à jenv avec jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/
.
La commande jenv versions
devrait maintenant afficher ceci :
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
La configuration de Maven
which mvn
renvoie /usr/local/bin/mvn
, qui est le version système de Maven. Semblable à Java, nous ne voulons jamais exécuter de commandes en utilisant le système Maven. Utilisons jenv pour obtenir une version différente de Maven.
Activez le plugin jenv Maven avec jenv enable-plugin maven
puis exécutez which mvn
pour vérifier que les commandes mvn
sont correctement capturées par une cale jenv. La commande which mvn
doit renvoyer quelque chose comme /Users/powers/.jenv/shims/mvn
.
Vous pouvez vérifier que votre installation Maven fonctionne correctement en clonant un projet et en exécutant la suite de tests. Clonez le projet JavaSpark avec la commande git clone [email protected]:MrPowers/JavaSpark.git
.
cd
dans le répertoire du projet et exécutez la suite de tests avec mvn test
.
Vous pouvez taper mvn -v
pour voir la version de Maven utilisée. Ma machine utilise Maven 3.6.3 avec Java 8.
Vous pouvez également cloner le dépôt deequ et vérifier que mvn test
travaille également sur ce dépôt.
Définition de la version Java locale pour les projets
Utilisez la commande jenv local openjdk64-11.0.9
pour définir un projet donné à utiliser Java 11 par défaut.
Cela ajoutera un fichier .java-version
dans le dossier du projet racine. Voici un exemple.
Vous pouvez cloner le dépôt delta-examples avec git clone [email protected]:MrPowers/delta-examples.git
, cd dans le répertoire, et exécuter jenv versions
pour vérifier que le projet utilise automatiquement Java 11.
Voici la sortie jenv versions
du répertoire racine du projet 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é de jenv à changer automatiquement de version Java pour différents projets est très pratique. Vous n’avez pas besoin de penser à définir manuellement la version Java lorsque vous modifiez des projets.
Autres façons de changer de version Java
Le projet AdoptOpenJDK fournit des conseils sur la façon de basculer manuellement entre les versions Java si vous ne souhaitez pas utiliser jenv. Voici la fonction qu’ils fournissent:
jdk() { version=$1 export JAVA_HOME=$(/usr/libexec/java_home -v"$version"); java -version }
La commutation manuelle est possible, mais qui veut gaspiller de l’énergie mentale en pensant aux versions Java chaque fois qu’il change de projet?
Prochaines étapes
jenv vous aidera à gérer Java sur votre Mac, même si vous n’avez besoin que d’une seule version.
Gérer différentes versions de Java sur une machine donnée était une énorme douleur avant l’arrivée de jenv. Maintenant, il vous suffit d’exécuter quelques commandes et votre machine peut être configurée pour exécuter n’importe quelle version Java. jenv permet d’éviter facilement l’utilisation accidentelle des packages Java installés par le système.
jenv a intégré des plugins pour SBT, Scala, Groovy et plus encore. Assurez-vous d’activer les plugins pertinents pour vos flux de travail.
Leave a Reply