web-dev-qa-db-fra.com

Que dois-je définir pour Java_HOME sur OSX

De nombreuses applications Java qui utilisent des scripts Shell pour configurer leur environnement utilisent la variable d'environnement Java_HOME pour démarrer la version correcte de Java, localiser les JAR JRE, etc.

Sous OSX 10.6, les chemins suivants semblent être valides pour cette variable

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

Certains d'entre eux sont des liens symboliques vers le VM actuel (comme défini dans le volet Java Préférences).

Mais lequel devrait être utilisé - ou est-il acceptable d'en utiliser un?

427
Robert Christie

Est-ce que Snow Leopard a toujours /usr/libexec/Java_home? Sur 10.5, je viens de définir Java_HOME sur le résultat de cette commande, ce qui devrait vous donner le chemin Java spécifié dans vos préférences Java. Voici un extrait de mon fichier .bashrc, qui définit cette variable:

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

Je n'ai rencontré aucun problème avec cette technique.

Parfois, je dois changer la valeur de Java_HOME pour une version antérieure de Java. Par exemple, un programme que je maintiens nécessite Java 5 32 bits sur OS X. Par conséquent, lors de l'utilisation de ce programme, je définis Java_HOME en exécutant:

export Java_HOME=$(/usr/libexec/Java_home -v 1.5)

Pour ceux d'entre vous qui n'ont pas Java_home sur votre chemin, ajoutez-le comme ceci.

Sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java_home /usr/libexec/Java_home
828
mipadi

En outre, il est intéressant de configurer votre PATH pour refléter le JDK. Après avoir ajouté Java_HOME (ce qui peut être fait avec l'exemple cité par 'mipadi'):

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

Ajoutez aussi dans ~/.profile:

export PATH=${Java_HOME}/bin:$PATH

P.S.: Pour OSX, j'utilise généralement .profile dans le répertoire HOME au lieu de .bashrc

37
lucasarruda

Je suis en train de MAC OS X(Sierra) 10.12.2.

Je règle Java_HOME pour qu'il fonctionne sur React Native (pour Android apps) en suivant les étapes ci-après.

  • Ouvrez le terminal (Commande + R, tapez Terminal, appuyez sur Entrée).

  • Ajoutez les lignes suivantes à ~/.bash_profile. export Java_HOME=$(/usr/libexec/Java_home)

  • Maintenant, lancez la commande suivante. source ~/.bash_profile

  • Vous pouvez vérifier la valeur exacte de Java_HOME en tapant la commande suivante. echo $Java_HOME

La valeur (sortie) renvoyée sera comme ci-dessous. /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

c'est tout.

19
hygull

De nos jours, Java semble être installé dans /Library/Java/JavaVirtualMachines

14

Je suis sur Mac OS 10.6.8

La solution la plus simple qui fonctionne pour moi est tout simplement de

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

Pour tester si cela fonctionne, mettez en

$ echo $Java_HOME

ça montre

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

vous pouvez aussi tester

$ which Java
14
Rae

J'ai tendance à utiliser /Library/Java/Home. Le fonctionnement du volet Préférences doit être à jour avec votre version préférée.

9
Clint

Cela ne fonctionne plus dans YOSEMITE pour les applications graphiques! Comme Eclipse, ou tout ce qui a commencé avec Spotlight. (.bash_profile, launchd.conf ne fonctionne que pour les sessions de terminal.) Avant de démarrer Eclipse, ouvrez simplement une fenêtre de terminal et donnez la commande suivante:

launchctl setenv Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

(Avec votre chemin d'installation! Peut-être fonctionne-t-il avec $ (/ usr/libexec/Java_home) au lieu du chemin complet également.)

Consultez l'excellent article sur la solution permanente ici: La définition de variables d'environnement via launchd.conf ne fonctionne plus sous OS X Yosemite/El Capitan/macOS Sierra?

8

Ignorer la configuration du terminal depuis que vous avez mentionné les applications, la configuration permanente des variables d’environnement système (fonctionne pour macOS Sierra; devrait également fonctionner pour El Capitan):

launchctl setenv Java_HOME $(/usr/libexec/Java_home -v 1.8)

(Ceci définira Java_HOME sur le dernier JDK 1.8, il est probable que vous ayez déjà effectué plusieurs mises à jour, par exemple javac 1.8.0_101, javac 1.8.0_131)
Bien sûr, changez 1.8 à 1.7 ou 1.6 (vraiment?) En fonction de vos besoins et de votre système

2
ericn

J'ai trouvé ceci pile pour aider, j'avais le même problème et je pouvais réparer:

Mon chemin Java était ici:

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

et il fallait mettre dans mon .bash_profile:

export Java_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

Espérons l'aide

2
Shirow

Pour moi, maven semble travailler sur le fichier .mavenrc:

echo "export Java_HOME=$(/usr/libexec/Java_home -v 1.8)" > ~/.mavenrc

Je suis sûr de l'avoir remarqué le SO aussi, je ne me souviens plus où.

1
maksimov

Créer un fichier ~/.mavenrc

puis collez ceci dans le fichier

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

tester

mvn -v

1
KhaledMohamedP

Comme d'autres réponses le notent, la méthode correcte pour trouver le répertoire de base Java consiste à utiliser /usr/libexec/Java_home.

La documentation officielle à ce sujet se trouve dans les questions techniques d'Apple QA1170: Important Java Répertoires sous OS X : https://developer.Apple.com/library/mac/qa/qa1170/_index.html

1
Kristopher Johnson