Comment définir ou modifier la version Java (JDK) par défaut sur OS X?

Comment pouvez-vous changer la version par défaut de Java sur un mac?

Exécutez d’abord /usr/libexec/java_home -V qui affichera quelque chose comme ceci:

 Matching Java Virtual Machines (3): 1.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 

Choisissez la version que vous souhaitez utiliser par défaut ( 1.6.0_65-b14-462 pour les arguments), puis:

 export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462` 

ou vous pouvez spécifier uniquement la version majeure, comme:

 export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 

Maintenant, lorsque vous exécutez java -version vous verrez:

 java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode) 

Ajoutez simplement la ligne export JAVA_HOME… au fichier init de votre shell.

Cette réponse est une tentative d’adressage: comment contrôler la version de Java à l’échelle du système (pas uniquement dans le shell en cours d’exécution) lorsque plusieurs versions de JDK sont installées à des fins de développement sur macOS El Capitan & Sierra . Autant que je sache, aucune des réponses actuelles ne le fait (*).

En tant que développeur, j’utilise plusieurs JDK et je veux passer facilement de l’un à l’autre. D’habitude, j’ai la dernière version stable (Java 8 maintenant) pour une utilisation générale, et d’autres pour les tests (par exemple, un ancien JDK7 et un JDK9 “Early Access” par exemple). Mais je ne veux pas que le système utilise Java 9 (par exemple lorsque je lance mon IDE) pour le moment. La valeur par défaut devrait être la dernière stable.

Ma solution actuelle:

  • laissez tous les JDK à leur emplacement par défaut, sous /Library/Java/JavaVirtualMachines . Le système choisira la version la plus élevée par défaut.
  • Pour exclure un JDK d’être sélectionné par défaut, renommez son Contents/Info.plist en Info.plist.disabled . Ce JDK peut toujours être utilisé lorsque $JAVA_HOME pointe ou est explicitement référencé dans un script ou une configuration. Il sera simplement ignoré par la commande java du système.

Le lanceur système utilisera le JDK avec la version la plus élevée parmi ceux qui ont un fichier Info.plist .

Lorsque vous travaillez dans un shell avec un autre JDK, choisissez votre méthode parmi les réponses existantes ( jenv , ou alias / scripts personnalisés autour de /usr/libexec/java_home , etc.).


Détails de l’enquête dans cet esprit .


(*) Les réponses actuelles sont soit obsolètes (ne sont plus valables pour macOS El Capitan ou Sierra), ou ne concernent qu’un seul JDK, ou ne traitent pas de l’aspect à l’échelle du système. Beaucoup expliquent comment changer $JAVA_HOME , mais cela n’affecte que le shell actuel et ce qui est lancé à partir de là. Cela n’affectera pas une application lancée depuis le lanceur de système d’exploitation (sauf si vous modifiez le bon fichier et que vous vous déconnectez / connectez, ce qui est fastidieux). Idem pour jenv, c’est cool et tout, mais pour autant que je sache, il ne fait que modifier les variables d’environnement, il a donc la même limitation.

Ajoutant aux réponses ci-dessus, je mets les lignes suivantes dans mon .bash_profile ce qui le rend très pratique à changer (y compris le commentaire de @ elektromin pour java 9):

 alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version" alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version" alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version" alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version" alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version" alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version" 

Après avoir inséré, exécutez $ source .bash_profile

Je peux passer à Java 8 en tapant ce qui suit:

 $ j8 java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) 

Une fonction de petits poissons basée sur / usr / libexec / java_home

 function jhome set JAVA_HOME (/usr/libexec/java_home $argv) echo "JAVA_HOME:" $JAVA_HOME echo "java -version:" java -version end 

Si vous n’utilisez pas de poisson, vous pouvez faire quelque chose de similaire en bash:

 #!/bin/bash jhome () { export JAVA_HOME=`/usr/libexec/java_home $@` echo "JAVA_HOME:" $JAVA_HOME echo "java -version:" java -version } 

Ensuite, pour basculer entre les javas:

 $> jhome #switches to latest java $> jhome -v 1.7 #switches to java 1.7 $> jhome -v 1.6 #switches to java 1.6 

ref: https://gist.github.com/kenglxn/1843d552dff4d4233271

Utiliser jenv est un moyen facile.

1.Installez jenv

  curl -s get.jenv.io |  bash 

2.Config jenv

     cd ~ / .jenv / candidats /
     mkdir java
     cd java
     mkdir 1.7
     mkdir 1.8

3.Symlink le chemin jdk

     ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~ / .jenv / candidats / java / 1.7
     ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / candidats / java / 1.8

4. vous êtes tous ensemble

commande de commutation:

jenv utilise java 1.8

définir par defaut:

jenv default java 1,7

C’est un peu délicat, mais essayez de suivre les étapes décrites dans Installation de Java sous OS X 10.9 (Mavericks) . En gros, vous devrez mettre à jour votre alias en java .

Pas à pas:

Après avoir installé JDK 1.7, vous devrez faire le sudo ln -snf afin de changer le lien vers java actuel. Pour cela, ouvrez Terminal et lancez la commande:

 sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK 

Notez que le répertoire jdk1.7.0_51.jdk peut changer selon la version du SDK que vous avez installée.

Maintenant, vous devez définir JAVA_HOME pour indiquer où jdk_1.7.0_xx.jdk été installé. Ouvrez à nouveau le terminal et tapez:

 export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home" 

Vous pouvez append la ligne d’ export JAVA_HOME ci-dessus dans votre fichier .bashrc pour avoir java en permanence dans votre terminal.

installer JDK, pas seulement JRE

 /usr/libexec/java_home -v 1.8 

donne

 /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home 

prochain

 touch .bash_profile open -a TextEdit.app .bash_profile 

TextEdit vous montrera une page vierge que vous pouvez remplir.

append à doc: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

en terminal:

 export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)" 

essayez la commande:

javac -version

devrait sortir:

 javac 1.8.0_111 
 function setjdk() { if [ $# -ne 0 ]; then removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin' if [ -n "${JAVA_HOME+x}" ]; then removeFromPath $JAVA_HOME fi export JAVA_HOME=`/usr/libexec/java_home -v $@` export PATH=$JAVA_HOME/bin:$PATH fi } 

mettez ceci dans votre ~ / .profile et utilisez-le dans votre terminal comme setjdk 1.8 , setjdk 1.7 , setjdk 9 etc etc …

Si vous n’avez pas removeFromPath alors c’est:

function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }

Ajouter la ligne:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'

au fichier

~/.bash_profile

remplacez par votre version téléchargée.

De la page de manuel officielle java_home (1) d’ Apple:

 **USAGE** /usr/libexec/java_home helps users set a $JAVA_HOME in their login rc files, or provides a way for command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi- tecture requirement. The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory, which is useful for starting Java command-line tools from launchd plists without hardcoding the full path to the Java command-line tool. Usage for bash-style shells: $ export JAVA_HOME=`/usr/libexec/java_home` Usage for csh-style shells: % setenv JAVA_HOME `/usr/libexec/java_home` 

Utilisez jenv, c’est comme un gestionnaire d’environnement Java. C’est super facile à utiliser et à nettoyer

Pour Mac, suivez les étapes suivantes:

 brew install jenv git clone https://github.com/gcuisinier/jenv.git ~/.jenv 

Installation: Si vous utilisez bash, procédez comme suit:

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

Ajoutez les versions souhaitées de JVM à jenv:

 jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

jenv append /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home

Vérifiez les versions installées:

 jenv versions 

Définissez la version Java que vous souhaitez utiliser en:

 jenv global oracle64-1.6.0 

JDK Switch Script

J’ai adapté la réponse de @Alex ci-dessus et écrit ce qui suit pour corriger le code pour Java 9.

 $ cat ~/.jdk #!/bin/bash #list available jdks alias jdks="/usr/libexec/java_home -V" # jdk version switching - eg `jdk 6` will switch to version 1.6 function jdk() { echo "Switching java version $1"; requestedVersion=$1 oldStyleVersion=8 # Set the version if [ $requestedVersion -gt $oldStyleVersion ]; then export JAVA_HOME=$(/usr/libexec/java_home -v $1); else export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; fi echo "Setting JAVA_HOME=$JAVA_HOME" which java java -version; } 

Passer à Java 8

 $ jdk 8 Switching java version 8 Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home /usr/bin/java java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) 

Passer à Java 9

 $ jdk 9 Switching java version 9 Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home /usr/bin/java java version "9.0.1" Java(TM) SE Runtime Environment (build 9.0.1+11) Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode) 

Si vous utilisez fish et que vous utilisez mac et que vous voulez pouvoir basculer entre les JDK, alors ça marche pour moi sur mac.

La réponse de @kenglxn n’a pas fonctionné pour moi et j’ai compris que bcos n’avait pas défini -g ce qui est global!

Mettez ci-dessous sous ~ / .config / fish / config.fish

 alias j8="jhome -v 1.8.0_162" alias j9="jhome -v 9.0.1" function jhome set -g -x JAVA_HOME (/usr/libexec/java_home $argv) echo "JAVA_HOME:" $JAVA_HOME echo "java -version:" java -version end funcsave jhome 

Pour savoir quelle version / version mineure vous avez installée, vous pouvez faire:

 /usr/libexec/java_home -V 579ms  Wed 14 Feb 11:44:01 2018 Matching Java Virtual Machines (3): 9.0.1, x86_64: "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home 1.8.0_162, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home 1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home 

Sur la base de @markhellewell answer, j’ai créé quelques fonctions d’alias qui le feront pour vous. Il suffit de les append au fichier de démarrage de votre shell

 #list available jdks alias jdks="/usr/libexec/java_home -V" # jdk version switching - eg `jdk 6` will switch to version 1.6 function jdk() { echo "Switching java version"; export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; java -version; } 

https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4

Cet outil fera le travail pour vous:

http://www.guigarage.com/2013/02/change-java-version-on-mac-os/

C’est un simple JavaOne qui peut être utilisé pour définir la version Java actuelle. La version peut être utilisée dans un shell ouvert après la sélection d’une version dans l’outil.

Si vous avez plusieurs versions et que vous souhaitez exécuter quelque chose en utilisant une version spécifique, utilisez cet exemple:

 /usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar 

SOLUTION TROP FACILE: Quel mal de tête – c’était une solution simple et rapide qui fonctionnait pour moi.

Mac OS Sierra Version 10.12.13

  1. Utilisez les touches de raccourci: CMD + SHIFT + G – tapez “/ Library /”

  2. Rechercher le dossier JAVA

  3. Clic droit sur Java Folder = Déplacer dans la corbeille (mot de passe requirejs)

  4. Installation: Kit de développement Java SE 8 jdk-8u131-macosx-x64.dmg | Télécharger Javascript SDK

  5. Assurez-vous que le nouveau dossier JAVA apparaît dans / LIBRARY /
  6. Installer Eclipse | Installer Eclipse IDE pour les développeurs Java
  7. Boom Done