web-dev-qa-db-fra.com

Où est Java_HOME sur macOS Mojave (10.14) à Lion (10.7)?

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

Cependant, une fois installé, il apparaît que la variable d'environnement Java_HOME est n'est pas définie correctement .

518
Olivier Refalo

Avec le package facultatif Java ou JDK Oracle installé, ajouter l'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 du drapeau -v basé sur Jilles van Gurp _ ​​ réponse .

1007
Olivier Refalo

/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 change pas réellement. C’est à cela que sert l’application Préférences Java. Dans mon cas, elle semble cassée et ne change pas correctement la machine virtuelle Java. Il répertorie la JVM 1.7 mais je peux basculer/désélectionner et glisser-déposer tout ce que je veux là-bas sans modifier réellement le résultat de /usr/libexec/Java_home.

Même après avoir installé la version 1.7.0 u6 d’Oracle sur Lion et l’avoir définie comme valeur par défaut dans les préférences, l’application Apple 1.6 Java Home restait renvoyée. Le seul correctif qui fonctionne réellement pour moi est la configuration manuelle de Java_HOME:

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.

Update: Comprendre Java à partir de la ligne de commande sous OSX explique mieux comment cela fonctionne. 

export Java_HOME=`/usr/libexec/Java_home -v 1.7` 

est le moyen de le faire. Notez que la mise à jour à 1.8 fonctionne très bien.

100
Jilles van Gurp

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 à partir de homebrew.

Ma solution vient du fichier hadoop-env.sh de hadoop que j’ai 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.

78
onpduo

Aucune des réponses ci-dessus ne m'a aidé. Je suppose que toutes les réponses sont pour les anciens OS X

Pour OS X Yosemite 10.10, suivez ces étapes

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-le (: suivi 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

À la deuxième ligne, vous mettez à jour le contenu du fichier .bash_profile.

39
Giri

Ce qui précède n'a pas fonctionné pour moi avec les outils EC2 d'Amazon, car il attend bin/Java etc. sous Java_HOME. /System/Library/Frameworks/JavaVM.framework/Home a fonctionné.

28
Cawflands

Pour OS X, vous pouvez faire:

export Java_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/Java_home`
18
sufinawaz

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
EGHM

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 à la maison 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"
13
Hemanta

Les machines JVM Oracle plus récentes telles que 1.7.0_21-b12 semblent s'installer ici:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

10
Archie

Une meilleure façon (plus évolutive) consiste à utiliser les éléments suivants:

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

Cela devrait également fonctionner avec AWS puisqu'il y a bin sous Home.

10
czarcrab

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 rend très facile de basculer entre J6 et J7

5
Mike Mitterer

pour macOS Mojave 10.14.1 et Java 11.0.1 , je règle le profil sur

export Java_HOME=$(/usr/libexec/Java_home)

touchez ce 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)
5
Jiulong Zhao

Pour Mac OS X 10.9, j'ai installé la dernière version de JRE d'Oracle, puis réinitialisé Java_HOME sur /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home. 

Je suis sûr qu'il existe un meilleur moyen mais m'a permis de démarrer. 

hughsmac: ~ hbrien $ echo $ Java_HOME /Bibliothèque/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Sommaire/Accueil

2
Hugh Brien

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, remplacez Java_HOME par export Java_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"

2
mmell

J'ai eu le même problème après la mise à niveau de Mac OS et les actions suivantes ont fonctionné pour moi:

  1. cmd> vi ~/.bash_profile 

  2. Ajoutez/mettez à jour la ligne pour Java_HOME: Export Java_HOME = "/ Bibliothèque/Java/JavaVirtualMachines/jdk1.7.0_15.jdk/Contenu/Accueil"

  3. cmd> source ~/.bash_profile ou ouvrir un nouveau terminal

Je pense que la version de jdk peut différer, utilisez donc simplement la version que vous avez sous/Bibliothèque/Java/JavaVirtualMachines /

1
user1270392

Si vous avez besoin de plusieurs versions de JDK sous Mac OS X (Yosemite), il peut être utile d’ajouter des scripts pour la commutation automatique entre elles. 

Ce que vous faites est d’éditer 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

Le script consiste à supprimer d’abord les autres versions de JDK du chemin afin qu’elles ne perturbent pas notre nouvelle version de JDK. Ensuite, il utilise intelligemment / usr/libexec/Java_home, une commande répertoriant les versions de 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 chemin pour qu'il pointe vers le répertoire bin du nouveau répertoire Java_HOME. A la fin, nous pouvons simplement exécuter la fonction en utilisant

setjdk 1.7

qui sélectionne la dernière version de 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 le choix des versions.

P.S. N'oubliez pas de source ~/.bash_profile après l'avoir sauvegardé.

1
ZeKoU

Je devais définir explicitement le chemin exact sur mon Macbook Air. 

Étapes suivies:

  1. essayez de echo $Java_HOME (s'il est défini, le chemin sera affiché); sinon, essayez de le rechercher en utilisant Sudo find /usr/ -name *jdk
  2. Editez le Bash p avec - Sudo nano ~/.bash_profile
  3. Ajoutez le chemin exact vers Java Home (avec le chemin de l'étape 2 ci-dessus) export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  4. Sauvegarder et quitter
  5. Vérifiez Java_Home en utilisant - echo $Java_HOME

J'utilise MACOS MOJAVE - 10.14.2 (18C54) sur un Macbook Air avec Java 8

1
Robin

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
0
Mikey

Il suffit de définir Java_home de la version 1.8 jdk dans le fichier netbeans.conf:

/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

ligne de commentaire:

netbeans_jdkhome="path/to/jdk"

et définir le chemin de 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 de jdk sur mac os

0

J'utilise Fish Shell sur High Sierra 10.13.4 et j'ai installé Java via Brew.

Ce n'est pas automatiquement configuré, donc pour le configurer correctement sur mon système, je lance:

set -U Java_HOME (/usr/libexec/Java_home)
0
chrismacp

Pour les utilisateurs du terminal Fish sur Mac (je pense que cela est également disponible sous 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
0
Jaguar