Sur Mac Sierra, j'ai / Library / Java / JavaVirtualMachines qui a jdk et Préférences Système> Java ce qui est différent entre ces 2?
vikramvi
question différente, merci
Olivier Refalo
Ne sous-estimez pas les chances que votre installation Java ne se soit pas terminée correctement. Si aucune des excellentes suggestions ci-dessous ne semble fonctionner, essayez de [ré] installer!
MarkHu
Réponses:
1059
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 .
Bon à savoir. Je dois dire que je ne suis pas trop ravi de la liste des fonctionnalités de Lion. Il ne semble pas y avoir grand-chose d'améliorations pour mon utilisation ...
prodigitalson
1
@Oliver: ewww :-) C'est probablement la chose la moins utile ... j'ai toujours plusieurs fenêtres ouvertes et disposées à l'écran pour que je puisse voir plusieurs choses à la fois ... généralement une disposition différente sur chaque espace.
prodigitals le
11
cela n'a pas fonctionné pour moi. /System/Library/Frameworks/JavaVM.framework/Home a fonctionné.
chaostheory
7
Fonctionne également sur Maverick!
cbare
3
Pour Java 11 et High Sierra, exportez JAVA_HOME = "$ (/ usr / libexec / java_home -v 11)"
Willie Z
112
/usr/libexec/java_homen'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:
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.
Cela aurait fonctionné si vous aviez installé java 6 d'Apple. le point ici est que vous utilisez oracle java 7.
Olivier Refalo
2
Cela fonctionne très bien pour moi sur Mavricks mais l'emplacement du script java_home est différent. export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Christopher Frost
1
J'ai essayé de configurer maven sur mac Yosemite, de cette façon pour que JAVA_HOME fonctionne pour moi.
Alocus
Fonctionne pour moi sur Sierra 10.12 et Java 8
Kanak Sony
41
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_profilefichier.
Je pense avoir obtenu votre pb - vous utilisez des guillemets au lieu de backquotes 'vs `
Olivier Refalo
Non, j'utilise les bonnes citations, mais j'ai essayé de copier-coller, cela n'a pas fonctionné. J'ai mis à jour ma réponse car cela a fonctionné pour moi.
Giri
@OlivierRefalo Je peux voir que vous avez mis à jour votre réponse avec des guillemets doubles ("). Mais même sans guillemets, cela fonctionne.
Giri
Merci beaucoup . Cela a fonctionné pour moi dans Yosemite 10.10
Vijay
2
C'est la seule solution qui fonctionne vraiment. L'ajout de chemin par toute autre solution s'ajoutera temporairement jusqu'à ce que vous terminiez le terminal et que le chemin disparaisse. Pour être ajouté définitivement, le chemin doit être enregistré dans le fichier .bash_profile. Pendant ce temps, j'ai utilisé du nano plutôt que du vim, pour la simplicité.
Nadeem Jamali
31
Mise à jour pour Java 9 et quelques alias soignés.
Ce qui précède n'a pas fonctionné pour moi avec les outils EC2 d'Amazon, car il attend bin/javaetc., en dessous JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/Homea fonctionné.
C'était un lion? avez-vous obtenu le package Java officiel d'Apple ou Java6 / 7 d'Oracle?
Olivier Refalo
Je pense que c'était le package Java d'Apple.
Cawflands
1
@AndrewH oui, j'ai trouvé la même chose vraie. Installation du package Java d'Apple et découverte du chemin d'accès à la bibliothèque (par exemple, pour définir -vm dans eclipse.ini): /System/Library/Java/Support/Deploy.bundle/Contents/Home/lib/javaws.jar
noogrub
Merci pour l'info. Je suis peut-être trop simple, mais pourquoi OS X fait-il d'une chose aussi simple un gâchis complet?
Je ne reçois pas votre proposition: en quoi est-ce différent de l'exportation JAVA_HOME = /usr/libexec/java_home ? la commande / usr / libexec / java_home renvoie /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Olivier Refalo
Pour visualgc / usr / libexec / java_home: le fichier java.exe trouvé dans: / usr / libexec / java_home ne se trouve pas dans un répertoire JDK. Veuillez définir et exporter votre variable d'environnement JVMSTAT_JAVA_HOME pour faire référence à un répertoire contenant le JDK Sun J2SE 1.5.0 (pas un JRE) et réessayer.
EGHM
13
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:
sorte de désaccord avec cette déclaration "plus évolutif" / usr / libexec / java_home est un exe qui retourne un chemin, pas un chemin fixe. En plus selon la version jvm que vous utilisez, le chemin ci-dessus ne correspondra pas
Olivier Refalo
10
Les machines virtuelles Java plus récentes telles que 1.7.0_21-b12 semblent s'installer ici:
En effet - et l' /usr/libexec/java_homeoutil renvoie une erreur pour ces versions Java.
Joe Dyndale
1
C'est LA seule réponse qui fonctionne pour moi après avoir téléchargé v1.7 JRE
maxrossello
2
Il s'agit du chemin d'accès si vous installez le JRE. La plupart des réponses et commentaires notés concernent le JDK. Pas la même chose.
8None1
9
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 RuntimeEnvironment18.9(build 11.0.1+13-LTS)JavaHotSpot(TM)64-BitServer VM 18.9(build 11.0.1+13-LTS, mixed mode)
J'ai dû le définir explicitement sur le chemin exact sur mon Macbook air.
Étapes suivies:
essayez de le faire echo $JAVA_HOME(s'il est défini, il affichera le chemin), sinon, essayez de le rechercher en utilisantsudo find /usr/ -name *jdk
Modifiez le Bash p avec - sudo nano ~/.bash_profile
Ajoutez le chemin exact à JAVA Home (avec le chemin de l'étape 2 ci-dessus)
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
Sauvegarder et quitter
Vérifiez JAVA_Home à l'aide de - 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.
Sur une nouvelle installation Mavericks, c'est la seule solution qui a fonctionné pour moi. J'ai dû pointer sqldeveloper vers la maison jdk située ici (comme suggéré par ce fil pour le faire fonctionner.
chris
2
OSX Yosemite, ZSH et Java SE Runtime Environment 8, je devais:
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 javaretours /usr/bin/java.
Donc, je mets JAVA_HOME=/usrdans mon .bashrc.
Apparemment, /usr/bin/javac'est un lien symbolique vers /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javalequel tout fonctionne.
Mise à jour
Comme mentionné dans le commentaire ci-dessous, cette JAVA_HOMEvaleur n'est pas une solution idéale lorsque la JAVA_HOMEvariable 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.
le fait est que / usr n'est pas un répertoire JAVA_HOME correct. Il est correct de localiser bin / java. Mais parfois, les constructeurs (ant, make) utilisent JAVA_HOME pour référencer le compilateur javac dans lib / tools.jar Votre solution échouera pour ceux-ci
Olivier Refalo
Ah, merci pour l'info. Tu as raison. Met à jour la réponse.
Anjan
0
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
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
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.
Mise à jour: ajout -v drapeau basé sur Jilles van Gurp réponse .
la source
/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:
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.
est la façon de le faire. Notez que la mise à jour vers 1.8 fonctionne très bien.
la source
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.
Cette solution fonctionne également pour OS X Yosemite avec Java 1.8 installé à partir d'Oracle.
la source
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és
OS X
Pour OS X Yosemite 10.10, procédez comme suit
Utilisez votre éditeur de texte préféré pour ouvrir:
~/.bash_profile
Ajoutez la ligne suivante dans le fichier et enregistrez-la (: suivie de "x" pour vim):
Ensuite, dans le terminal, tapez les deux commandes suivantes pour voir la sortie:
Dans la deuxième ligne, vous mettez à jour le contenu du
.bash_profile
fichier.la source
Mise à jour pour Java 9 et quelques alias soignés.
Dans
.bash_profile
:Notez que pour la dernière version, c'est le cas
9
et non1.9
.Définir Java actif:
Quelques alias supplémentaires pour basculer entre les différentes versions:
Test en terminal:
EDIT: mise à jour pour Java 10
EDIT: mise à jour pour Java 11
la source
Ce qui précède n'a pas fonctionné pour moi avec les outils EC2 d'Amazon, car il attend
bin/java
etc., en dessousJAVA_HOME
./System/Library/Frameworks/JavaVM.framework/Home
a fonctionné.la source
Pour OS X, vous pouvez faire:
la source
Sur Mac OS X Lion, pour configurer l'exécution de visualgc, j'ai utilisé:
la source
/usr/libexec/java_home
? la commande / usr / libexec / java_home renvoie /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/HomeCe 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
,la source
Une meilleure façon (plus évolutive) consiste à utiliser ce qui suit:
Cela devrait également fonctionner avec AWS car il se trouve
bin
sous Homela source
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
la source
/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
entrez le terminal pour confirmer:
la source
Mon approche est:
.bashrc
Cela permet de basculer très facilement entre J6 et J7
la source
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
la source
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
la source
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"
la source
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 /
la source
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:
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
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
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é.
la source
Pour Java 11 (JDK 11), il peut être localisé avec la commande suivante:
la source
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 laJAVA_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.la source
Pour Mac Yosemite,
JDK 1.7.0_xx utilise
la source
Toute personne utilisant AUSKEY de l'Australian Tax Office (ATO) doit désinstaller AUSKEY. Cela a réglé mes problèmes JAVA_HOME.
Il n'est également plus nécessaire pour les utilisateurs MAC. Yah!
la source
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:
la source
Définissez simplement java_home de la version 1.8 jdk dans le
netbeans.conf
fichier:décommenter la ligne:
et définissez le chemin vers votre 1.8 jdk, dans mon cas:
Cette approche vous permet d'avoir plusieurs versions jdk sur mac os
la source
Pour les utilisateurs du terminal Fish sur Mac (je pense qu'il est également disponible sur Linux), cela devrait fonctionner:
la source
pour utilisateur mac. java 8 devrait ajouter
java 6:
réf: http://qiita.com/seri_k/items/e978c1339ce51f13e297
la source