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.
/Library/Java/JavaVirtualMachines
. Le système choisira la version la plus élevée par défaut. 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
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
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; }
$ 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)
$ 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
Utilisez les touches de raccourci: CMD + SHIFT + G – tapez “/ Library /”
Rechercher le dossier JAVA
Clic droit sur Java Folder = Déplacer dans la corbeille (mot de passe requirejs)
Installation: Kit de développement Java SE 8 jdk-8u131-macosx-x64.dmg | Télécharger Javascript SDK