web-dev-qa-db-fra.com

Pourquoi ne puis-je pas voir le chemin Java_HOME sur mon MAC OS X 10.11?

J'essaie d'exécuter une application Java sur mon MAC OS X 10.11 (El Capitan).

J'ai utilisé ce lien pour définir Java_HOME sur mon MAC OS X 10.11.

Je suis capable d'exécuter les commandes suivantes:
Version Java 
quel Java

Cependant, lorsque je vais à l'application Terminal sur MAC et que je tape echo $ Java_HOME, je ne vois rien. Pourquoi donc? Cela signifie-t-il que mon Java_HOME n'est pas défini correctement?

15
Andy

Où le définir

Ok, tout d’abord, nous devons préciserpour définir Java_HOME.

Simplifié, vous pouvez le définir dans deux fichiers: soit ~/.bashrc, soit ~/bash_profile. Par default , le premier est exécuté pour ce qu'on appelle des "shells interactifs sans connexion", tandis que le dernier est utilisé pour les "shells de connexion" . Un "shell de connexion" correspond exactement à ce que vous attendez: un shell qui est démarré après la connexion via la ligne de commande. Un "shell interactif sans connexion" est un shell qui est démarré à partir d'une interface graphique par exemple. Donc, d'après cela, nous devrions mettre notre déclaration d'exportation dans ~/.bashrc.

Note latérale: Bien que l'application "Terminal" d'OS X lise les deux fichiers mentionnés, il ne s'agit pas du comportement par défaut et ne doit donc pas être traitée comme telle. Et c'est pourquoi j'ai écrit une explication.

Qu'est-ce que définissent

Vous devez exporter Java_HOME dans le fichier ~/.bashrc pour que la variable soit définie à chaque ouverture d'un shell.

Sous OS X, les kits de développement Java et les environnements d'exécution sont stockés sous /Library/Java/JavaVirtualMachines/ pendant un bon moment maintenant. Jetez un coup d'oeil là-bas. Voici à quoi ça ressemble sur ma machine:

/Library/Java/JavaVirtualMachines/
├── jdk1.7.0_45.jdk
├── jdk1.8.0_20.jdk
├── jdk1.8.0_25.jdk
└── jdk1.8.0_51.jdk

Les sous-dossiers ressemblent à ceci

jdk1.7.0_45.jdk/
└── Contents
    ├── Home
    ├── Info.plist
    └── MacOS

Et là nous l'avons eu. Donc, si vous vouliez pointer sur le JDK 1.7.0_45, vous mettriez la déclaration suivante dans votre .bashrc

export Java_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home"

Pour vous assurer que les fichiers binaires corrects pour cette version de Java sont appelés, vous devez également ajouter les éléments suivants quelque part après l'instruction ci-dessus:

export PATH=$Java_HOME/bin:$PATH
34
export Java_HOME=$(/usr/libexec/Java_home -v 1.8)

c'est pour Java 8 .... lien d'origine où je l'ai trouvé ici Installation de Java sous Mac OS X 10.10 Yosemite et 10.11 El Capitan

Mais la réponse acceptée fonctionne aussi. Juste besoin de faire attention aux changements de chemin après les mises à jour.

7
SDen

Vous trouverez de nombreuses réponses sur la définition de Java_HOME dans OSX, mais il est difficile de trouver une réponse à la question de savoir si la définition de Java_HOME est nécessaire.

Pourquoi donc? Est-ce que cela signifie que Java_HOME n'est pas défini correctement?

Sous OSX, la variable d’environnement Java_HOME est facultative. Les installateurs JRE et JDK ne prévoient pas que Java_HOME soit défini; donc, ne pas définir Java_HOME convient parfaitement.

1
chw1k

Si vous souhaitez utiliser jdk 1.6 pour une raison quelconque, qu’Apple n’a plus pris en charge. Il sera supprimé après la mise à jour de Mac OS. Vous pouvez toujours obtenir jdk 1.6 à partir de cette page: https://support.Apple.com/kb/DL1572?locale=zh_CN

Après avoir installé jdk 1.6 à nouveau, n'oubliez pas de confirmer l'exportation du répertoire correct pour la variable système $ Java_HOME dans ~/.bash_profile, etc. ... Pour moi, il s'agit de "/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents /Accueil".

0
Willie Z