Comment définir JAVA_HOME pour Java?


303

J'ai installé une version de Java. Comment pouvons-nous définir la $JAVA_HOMEvariable d'environnement correctement?

Réponses:


422

Vous pouvez configurer votre JAVA_HOMEen /etc/profiletant que Pétronille Escarabajo suggère. Mais l'emplacement préféré pour JAVA_HOMEtoute variable système est /etc/environment.

Ouvrez /etc/environmentdans n'importe quel éditeur de texte tel que nanoou geditet ajoutez la ligne suivante:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(le chemin java pourrait être différent)

Utilisez sourcepour charger les variables, en exécutant cette commande:

source /etc/environment

Puis vérifiez la variable en lançant cette commande:

echo $JAVA_HOME

Mise à jour

Généralement, la plupart des systèmes linux utilisent / etc / environment par défaut. Si votre système ne le fait pas, ajoutez la ligne suivante à ~/.bashrc(Merci @pje)

source /etc/environment

2
Lorsque j'ai essayé d'exécuter Android Studio (basé sur IntelliJ IDEA), un message d'erreur très similaire à celui de @ advocate: "" tools.jar "ne semble pas figurer dans le classpath d'Android Studio." Après avoir beaucoup tripoté JAVA_HOME sans succès, j'ai décidé de jeter un coup d'œil à studio.sh, le script shellscript qui lance Android Studio. Comme par hasard, j'ai défini JDK_HOME sur la même valeur que celle attendue pour JAVA_HOME, et le tour est joué! Il a installé sans grands problèmes.
Hilton Fernandes

3
Pour ceux qui développent des logiciels, ne placez pas votre JAVA_HOME dans / etc / environment sauf si vous souhaitez redémarrer à chaque fois que vous changez de version du JDK.
HDave

2
C'est une solution temporaire, comme d'autres l'ont souligné. Personne ne voudrait exécuter le code source chaque fois qu'il redémarre son bash.
Yuranos87

6
Comme d'autres l'ont fait remarquer, cela ne colle pas entre les sessions de terminal. Ce que j'ai fait pour remédier à cela est simplement ajouté la ligne source /etc/environmenten haut de mon fichier de configuration bash ~/.bashrcafin qu'il charge tous les paramètres de mon environnement au démarrage. Travailler pour moi jusqu'à présent.
mardi

2
@sedulam j'ai mis à jour la réponse
Manula Waidyanatha

79

Pour définir JAVA_HOMEla variable d'environnement, procédez comme suit:

  1. Lancez Terminal en appuyant sur Ctrl+ Alt+ Tsur votre clavier.
  2. Entrez la commande suivante:
    $gksudo gedit /etc/environment
  3. En fonction de l’emplacement où vous avez installé Java, vous devrez fournir le chemin complet. Pour cet exemple, j'ai installé Oracle JDK 7 dans le /usr/lib/jvm/java-7-oraclerépertoire.
    Faites défiler jusqu'à la fin du fichier et entrez les informations suivantes:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Enregistrez votre fichier et quittez gedit .
  5. Enfin, rechargez le système PATH avec la commande suivante:
    $. /etc/environment

La méthode ci-dessus vous évite d'avoir à exécuter les commandes à chaque fois que vous vous connectez à votre ordinateur.


5
Comment ça marche / etc / environment fonctionne?
Sudip Bhandari

1
L'ajout de la exportcommande est-il nécessaire dans /etc/environment?
pkaramol

@pkaramol J'ai dû ajouter l'exportation JAVA_HOME sur 16.04LTS pour le charger au démarrage.
Adeen-s

3
@ adeen-s Vous avez ajouté exportune ligne /etc/environmentet cela vous a aidé? Ce fichier contient des définitions de variables analysées comme des =paires nom-valeur délimitées; son contenu n'est pas exécuté en tant que commande. (Voir man pam_env.) Donc, à moins que vous ne traitiez le fichier séparément comme s'il s'agissait d'un script (par exemple, en passant /etc/environmentà bash ./ sourcebuiltin), je ne m'attendrais pas à ce que cela fonctionne.
Eliah Kagan

> Comment ça marche / etc / environment fonctionne? - (point) charge les commandes depuis un fichier askubuntu.com/a/232938/189965
Roman Bekkiev le

37

Si vous ne connaissez pas le chemin et que vous avez seulement openJDK installé, vous pouvez taper update-alternatives --config javaet vous devriez trouver le chemin. Pour définir la variable, vous pouvez écrire JAVA_HOME=<PATH>suivi de export JAVA_HOME. Notez qu'il n'y a pas d'espace lors de la déclaration de la variable. Pour vérifier si la variable est stockée, il vous suffit de taper echo $JAVA_HOMEpour vérifier.


Cela semble être statique. Si je supprime openjdk-7 et installe openjdk-9, JAVA_HOME ne pointe-t-il pas alors au mauvais endroit? Comment peut-il être dynamisé?
DavidJ

3
En le modifiant manuellement. Encore une fois, vous êtes comme ça que ça devient dynamique ....
HDave

Ce que @HDave signifie, c'est que dans certains cas, vous pouvez souhaiter que JAVA_HOME pointe vers une version Java spécifique. Par conséquent, la mise à jour de JAVA_HOME dynamique peut ne pas être ce que vous souhaitez.
Maciej

J'aime cette réponse. J'ai testé avec écho et voir mon chemin. Cependant, je ne comprends pas pourquoi je reçois toujours la variable d'environnement JAVA_HOME qui n'est pas définie lorsque j'exécute mvn -version
Winnemucca.

1
J'ai écrit cette réponse quand j'étais plus ignorant. Définir la variable comme décrit n’affectera que votre session de terminal en cours et ne sera pas conservé. La bonne façon est de courir update-alternatives --install <link> <name> <target> <priority> par exemple:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.