Java est un package facultatif sur les dernières versions de macOS.
Pourtant, une fois installé, il semble que la variable d'environnement JAVA_HOME ne soit pas définie correctement .
Java est un package facultatif sur les dernières versions de macOS.
Pourtant, une fois installé, il semble que la variable d'environnement JAVA_HOME ne soit pas définie correctement .
Réponses:
Avec le package optionnel Java ou Oracle JDK installé, l'ajout d'une des lignes suivantes à votre fichier ~ / .bash_profile définira la variable d'environnement en conséquence.
export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
Mise à jour: ajout -v drapeau basé sur Jilles van Gurp réponse .
/usr/libexec/java_home
n'est pas un répertoire mais un exécutable. Il génère le JAVA_HOME actuellement configuré et ne le modifie pas réellement. C'est à cela que sert l'application Java Preferences, qui dans mon cas semble cassée et ne change pas réellement la JVM correctement. Il répertorie la JVM 1.7, mais je peux basculer / désélectionner et faire glisser et déposer tout ce que je veux sans changer réellement la sortie de /usr/libexec/java_home
.
Même après avoir installé 1.7.0 u6 à partir d'Oracle sur Lion et l'avoir défini comme valeur par défaut dans les préférences, il a toujours renvoyé la maison java apple 1.6. Le seul correctif qui fonctionne réellement pour moi consiste à définir JAVA_HOME manuellement:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Au moins de cette façon, lorsqu'il sera exécuté à partir de la ligne de commande, il utilisera 1.7. /usr/libexec/java_home
insiste toujours sur 1.6.
Mise à jour : Comprendre Java à partir de la ligne de commande sur OSX a une meilleure explication sur la façon dont cela fonctionne.
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
est la façon de le faire. Notez que la mise à jour vers 1.8 fonctionne très bien.
Pour moi, Mountain Lion 10.8.2, la solution la plus votée ne fonctionne pas. J'ai installé jdk 1.7 via Oracle et maven de homebrew.
Ma solution provient du fichier hadoop-env.sh de hadoop que j'ai également installé depuis homebrew. J'ajoute la phrase ci-dessous dans ~ / .bash_profile, et cela fonctionne.
export JAVA_HOME="$(/usr/libexec/java_home)"
Cette solution fonctionne également pour OS X Yosemite avec Java 1.8 installé à partir d'Oracle.
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Aucune des réponses ci-dessus ne m'a aidé. Je suppose que toutes les réponses sont pour les plus âgésOS X
Pour OS X Yosemite 10.10, procédez comme suit
Utilisez votre éditeur de texte préféré pour ouvrir: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
Ajoutez la ligne suivante dans le fichier et enregistrez-la (: suivie de "x" pour vim):
export JAVA_HOME=$(/usr/libexec/java_home)
Ensuite, dans le terminal, tapez les deux commandes suivantes pour voir la sortie:
$ source ~/.bash_profile
$ echo $JAVA_HOME
Dans la deuxième ligne, vous mettez à jour le contenu du .bash_profile
fichier.
Mise à jour pour Java 9 et quelques alias soignés.
Dans .bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Notez que pour la dernière version, c'est le cas 9
et non 1.9
.
Définir Java actif:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Quelques alias supplémentaires pour basculer entre les différentes versions:
alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'
Test en terminal:
% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
EDIT: mise à jour pour Java 10
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
EDIT: mise à jour pour Java 11
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
Ce qui précède n'a pas fonctionné pour moi avec les outils EC2 d'Amazon, car il attend bin/java
etc., en dessous JAVA_HOME
. /System/Library/Frameworks/JavaVM.framework/Home
a fonctionné.
Sur Mac OS X Lion, pour configurer l'exécution de visualgc, j'ai utilisé:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
? la commande / usr / libexec / java_home renvoie /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Ce qui suit a fonctionné pour moi. J'utilise ZSH sur OSX Yosemite avec Java 8 installé.
La commande suivante /usr/libexec/java_home
émet le chemin d'accès à l'accueil JDK:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Dans votre ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
Une meilleure façon (plus évolutive) consiste à utiliser ce qui suit:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Cela devrait également fonctionner avec AWS car il se trouve bin
sous Home
Les machines virtuelles Java plus récentes telles que 1.7.0_21-b12 semblent s'installer ici:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
outil renvoie une erreur pour ces versions Java.
pour macOS Mojave 10.14.1 et JAVA 11.0.1 j'ai défini le profil comme
export JAVA_HOME=$(/usr/libexec/java_home)
entrez le terminal pour confirmer:
$JAVA_HOME/bin/java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
Mon approche est:
.bashrc
export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME
# -- optional
# export PATH=$JAVA_HOME/bin:$PATH
Cela permet de basculer très facilement entre J6 et J7
J'ai dû le définir explicitement sur le chemin exact sur mon Macbook air.
Étapes suivies:
echo $JAVA_HOME
(s'il est défini, il affichera le chemin), sinon, essayez de le rechercher en utilisantsudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
J'utilise MACOS MOJAVE - 10.14.2 (18C54) sur un Macbook Air avec JAVA 8
Pour Mac OS X 10.9, j'ai installé la dernière version de JRE d'Oracle, puis j'ai réinitialisé JAVA_HOME sur /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home.
Je suis sûr qu'il y a une meilleure façon mais je me suis mis en route.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
OSX Yosemite, ZSH et Java SE Runtime Environment 8, je devais:
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin
et dans ~ / .zshrc, changez JAVA_HOME en
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
Vous avez le même problème après avoir mis à niveau mon Mac OS et les éléments suivants ont fonctionné pour moi:
cmd> vi ~ / .bash_profile
Ajoutez / mettez à jour la ligne pour JAVA_HOME: export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home"
cmd> source ~ / .bash_profile ou ouvrez un nouveau terminal
Je pense que la version jdk peut différer, alors utilisez simplement la version que vous avez sous / Library / Java / JavaVirtualMachines /
Si vous avez besoin de plusieurs versions de JDK sous Mac OS X (Yosemite), il peut être utile d'ajouter des scripts pour basculer automatiquement entre eux.
Ce que vous faites est de modifier votre ~ / .bash_profile et d'ajouter ce qui suit:
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
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
Ce que le script fait est de supprimer d'abord les autres versions JDK dans le PATH afin qu'elles n'interfèrent pas avec notre nouvelle version JDK. Ensuite, il fait un usage intelligent de / usr / libexec / java_home qui est une commande qui répertorie les versions JDK installées. L' argument -v indique à java_home de renvoyer le chemin du JDK avec la version fournie, par exemple 1.7. Nous mettons également à jour le PATH pour pointer vers le répertoire bin du répertoire JAVA_HOME nouvellement trouvé . À la fin, nous pouvons simplement exécuter la fonction en utilisant
setjdk 1.7
qui sélectionne la dernière version JDK installée de la branche 1.7. Pour sélectionner une version spécifique, vous pouvez simplement exécuter
setjdk 1.7.0_51
au lieu. Exécutez / usr / libexec / java_home -V pour obtenir plus de détails sur la façon de choisir les versions.
PS N'oubliez pas de source ~ / .bash_profile après l'avoir enregistré.
Cette réponse est liée à Mountain Lion et non à Lion. J'avais besoin de le faire pour les outils de ligne de commande AWS. Selon les documents AWS , l'exécution des which java
retours /usr/bin/java
.
Donc, je mets JAVA_HOME=/usr
dans mon .bashrc
.
Apparemment, /usr/bin/java
c'est un lien symbolique vers /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
lequel tout fonctionne.
Mise à jour
Comme mentionné dans le commentaire ci-dessous, cette JAVA_HOME
valeur n'est pas une solution idéale lorsque la JAVA_HOME
variable d'environnement doit être utilisée par d'autres choses que les outils de ligne de commande AWS. Cela fonctionne bien pour les outils de ligne de commande AWS, comme indiqué dans leurs documents.
Pour Mac Yosemite,
JDK 1.7.0_xx utilise
$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
J'utilise Fish shell sur High Sierra 10.13.4 et j'ai installé Java via Brew.
Il n'est pas configuré automatiquement, donc pour le configurer correctement sur mon système, je lance:
set -U JAVA_HOME (/usr/libexec/java_home)
Définissez simplement java_home de la version 1.8 jdk dans le netbeans.conf
fichier:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
décommenter la ligne:
netbeans_jdkhome="path/to/jdk"
et définissez le chemin vers votre 1.8 jdk, dans mon cas:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
Cette approche vous permet d'avoir plusieurs versions jdk sur mac os
Pour les utilisateurs du terminal Fish sur Mac (je pense qu'il est également disponible sur Linux), cela devrait fonctionner:
set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8 //or whichever version you want as default
pour utilisateur mac. java 8 devrait ajouter
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
java 6:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home