Question Où est JAVA_HOME sur macOS Sierra (10.12), El Capitan (10.11), Yosemite (10.10), Mavericks (10.9), Mountain Lion (10.8) ou OSX Lion (10.7)?


Java est un package facultatif sur les dernières versions de macOS.

Pourtant, une fois installé, il apparaît comme le JAVA_HOME variable d'environnement est pas défini correctement.


489
2017-07-05 20:19


origine


Réponses:


Avec le Package optionnel Java ou Oracle JDK installée,   ajouter une des lignes suivantes à votre ~ / .bash_profile fichier 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.


956
2017-07-05 20:21



/usr/libexec/java_home n'est pas un répertoire mais un exécutable. Il sort le JAVA_HOME actuellement configuré et ne le change pas réellement. Voilà à quoi 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ézoomer et glisser et déposer tout ce que je veux là sans réellement changer la sortie de /usr/libexec/java_home.

Même après l'installation de la version 1.7.0 u6 d'Oracle sur Lion et son paramétrage par défaut dans les préférences, elle renvoyait toujours la version 1.6 de la version 1.6 de Java. La seule correction qui fonctionne réellement pour moi est de définir manuellement JAVA_HOME:

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

Au moins de cette façon lorsqu'il est exécuté à partir de la ligne de commande, il utilisera 1.7. /usr/libexec/java_home insiste toujours sur 1.6.

Mettre à jour: Comprendre Java à partir de la ligne de commande sous 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. Remarque, la mise à jour à 1.8 fonctionne très bien.


93
2017-08-15 10:28



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 vient du fichier hadoop-env.sh de hadoop que j'ai également installé chez homebrew. J'ajoute la phrase ci-dessous dans ~ / .bash_profile, et ça marche.

export JAVA_HOME="$(/usr/libexec/java_home)"

Cette solution fonctionne également pour OS X Yosemite avec Java 1.8 installé à partir d'Oracle.


76
2017-12-29 23:00



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

//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 de .bash_profile fichier.


34
2018-06-15 01:30



Ce qui précède ne fonctionne pas pour moi avec les outils EC2 d'Amazon, car il attend bin/java etc. dessous JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/Home a travaillé.


28
2017-11-29 14:07



Pour OS X, vous pouvez faire:

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`

17
2017-09-16 16:00



Mise à jour pour Java 9 et certains alias soigné.

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, il est 9 et pas 1.9.

Définissez Java actif:

export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH

Un alias supplémentaire 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
version java "1.8.0_121"
Environnement d'exécution Java (TM) SE (build 1.8.0_121-b13)
VM serveur Java HotSpot (64 bits) (version 25.121-b13, mode mixte)
% j9
% java -version
Version Java "9"
Java (TM) SE Runtime Environment (build 9 + 181)
Machine virtuelle Java HotSpot (TM) 64 bits (build 9 + 181, mode mixte)

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 '

16
2017-09-22 06:54



Sur Mac OS X Lion, pour que visualgc fonctionne, j'ai utilisé:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

14
2018-01-27 07:02



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 vers JDK home:

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

Dans ton ~/.zshrc,

export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"

12
2017-10-28 02:39