Nous devons faire une distinction entre les deux variables d'environnement qui sont discutées ici de manière interchangeable. L'un est la variable JAVA_HOME . L'autre est la variable Path . Tout processus qui fait référence à la variable JAVA_HOME recherche le chemin de recherche vers le JDK, pas le JRE. L'utilisation de la variable JAVA_HOME n'est pas destinée au compilateur Java lui-même. Le compilateur connaît son propre emplacement. La variable est destinée à d'autres logiciels pour localiser plus facilement le compilateur. Cette variable est généralement utilisée par le logiciel IDE pour compiler et créer des applications à partir du code source Java. En revanche, l'interpréteur Windows CMD et de nombreux autres logiciels tiers et tiers font référence à la variable Path et non à la variable JAVA_HOME.
Cas d'utilisation 1: compilation à partir de CMD
Ainsi, par exemple, si vous n'utilisez aucun logiciel IDE et que vous souhaitez simplement pouvoir compiler à partir du CMD, indépendamment de votre répertoire de travail actuel, ce que vous voulez, c'est définir correctement la variable Path. Dans votre cas, vous n'avez même pas besoin de la variable JAVA_HOME. Parce que CMD utilise Path, pas JAVA_HOME pour localiser le compilateur Java.
Cas d'utilisation 2: compilation à partir d'IDE
Toutefois, si vous êtes utilisez un logiciel IDE, vous devez consulter la documentation avant tout. Il peut nécessiter que JAVA_HOME soit défini, mais il peut également utiliser un autre nom de variable dans le même but. La norme de facto au fil des ans a été JAVA_HOME, mais ce n'est pas toujours le cas.
Cas d'utilisation 3: compilation à partir d'IDE et de CMD
Si, en plus du logiciel IDE, vous souhaitez également pouvoir compiler à partir du CMD, indépendamment de votre répertoire de travail actuel, en plus de la variable JAVA_HOME, vous devrez peut-être également ajouter le chemin de recherche JDK à la variable Path.
JAVA_HOME vs Path
Si votre problème concerne la compilation de Java, vous souhaitez vérifier la variable JAVA_HOME et le chemin (le cas échéant). Si votre problème concerne l'exécution d'applications Java, vous souhaitez vérifier votre variable Path.
La variable de chemin est utilisée universellement sur tous les systèmes d'exploitation. Parce qu'elle est définie par le système et que c'est la variable par défaut utilisée pour localiser le JRE, il n'y a presque jamais de problème lors de l'exécution des applications Java. Surtout pas sous Windows où les installateurs de logiciels configurent généralement tout pour vous. Mais si vous installez manuellement, la chose la plus sûre à faire est peut-être d'ignorer complètement la variable JAVA_HOME et d'utiliser simplement la variable Path pour tout, pour JDK et JRE. Toute version récente d'un logiciel IDE devrait être en mesure de le récupérer et de l'utiliser.
Liens symboliques
Les liens symboliques peuvent fournir un autre moyen de référencer le chemin de recherche JDK en superposant l'une des variables d'environnement existantes.
Je ne suis pas sûr des versions précédentes des versions Oracle / Sun JDK / JRE, mais au moins le programme d'installation de jdk1.8.0_74 ajoute le chemin de recherche C:\ProgramData\Oracle\Java\javapath
à la variable Path et le place au début de la valeur de chaîne. Ce répertoire contient des liens symboliques vers java.exe, javaw.exe et javaws.exe dans le répertoire JRE.
Ainsi, au moins avec le Java 8 JDK, et vraisemblablement le Java 8 JRE autonome, aucune configuration de variable d'environnement ne doit être effectuée pour le JRE. Tant que vous utilisez le package d'installation pour le configurer. Il peut cependant y avoir des différences sur votre installation Windows. Notez que Oracle JRE est fourni avec le JDK.
Si vous constatez que votre configuration Java JDK utilise la mauvaise version du compilateur, ou si elle semble fonctionner par magie, sans être explicitement définie (sans lancer le sort), alors vous pouvez avoir un lien symbolique quelque part dans vos variables d'environnement . Donc, vous voudrez peut-être vérifier le lien symbolique.