J’ai java 7
et java 8
tous deux installés sur mon système Windows sous C:\Program Files\Java
Dans le cheminement de l’environnement, j’ai spécifié le chemin de java 7
comme ceci.
%JAVA_HOME%/bin
où JAVA_HOME = C:\Program Files\Java\jdk1.7.0_17
Mais lorsque je tape javac -version
il affiche javac 1.7.0_17
ce qui est logique
mais quand je fais java -version
cela montre
java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
Toute idée de ce qui peut être le problème ici?
Editer le dossier installé:
Et encore une chose echo %PATH%
n’a qu’une occurrence de JDK
qui est pour java 7
et aucune occurrence de JRE
trouve.
Le problème se produit probablement parce que vous avez un JRE
sur votre path
, avant votre JDK
. Cela se produit généralement lorsque nous ajoutons JDK dans le path
sans supprimer les JRE ajoutés précédemment. Ainsi, lorsque vous faites java
il pointe vers JRE et lorsque vous faites javac
il pointe vers l’autre version / JDK (jre n’y ayant pas de javac)
Edit: – Depuis que vous avez édité votre question et que vous n’avez posté aucun JRE dans votre chemin, vous pouvez copier votre %JAVA_HOME%
et le coller d’abord dans votre variable path (assurez-vous que son chemin avant system32 est déjà présent). installer Android SDK) et le faire a résolu.
A également trouvé une explication possible à partir d’ ici : –
JRE also puts a java.exe to c:\Windows\System32, that's how first command is resolved. Second command is resolved by the C:\Program Files\Java\jdk1.7.0_02\bin entry in your PATH variable. If (and when) you are developing from the command prompt, you have to adjust the PATH variable so that C:\Program Files\Java\jdk1.7.0_02\bin is before c:\Windows\System32.
Ok, comme vous avez dit que vous n’avez aucun JRE sur votre chemin, je suppose que where java
(si vous avez Windows 7) vous donnera C:\Windows\System32\java.exe
.
java
cours d’exécution Essayez d’utiliser la boîte de dialog Java-Settings à partir du panneau de configuration pour modifier la version du système Java actuellement active. Cela devrait changer la version java -version
est de retour. Si cela ne fonctionne pas, vous devrez probablement réinstaller la version de Java sur laquelle vous voulez exécuter la commande java
, spécifier le chemin explicitement, écrire votre propre wrapper (ce qui fonctionne si vous êtes dans le même répertoire que le wrapper) ou le placer le chemin JRE avant C:\Windows\System32\
sur votre chemin (je ne sais pas si la dernière option est vraiment bonne).
Un wrapper pourrait ressembler à ceci:
@"C:\Program Files\Java\jre7\bin\java.exe" %*
et vous pouvez soit le nommer java.bat
(où il fonctionnera si vous êtes dans le même répertoire ou le placer dans PATH
avant C:\Windows\System32\java.exe
ou vous pouvez le nommer java7.bat
et le placer n’importe où sur votre chemin pour pouvoir exécuter Java 7 JRE si vous le souhaitez.
Un wrapper est également une bonne option si vous souhaitez modifier JAVA_HOME
lors de son exécution.
javac
marche Si vous souhaitez exécuter un autre javac
appuyez sur Windows + Pause
et ouvrez la boîte de dialog système pour modifier le PATH
afin qu’il contienne le chemin d’access à votre JDK 8 au lieu de votre JDK 7. Vous devrez redémarrer votre ligne de commande pour les afficher.
Pour résoudre ce type de problème d’environnement, je crois toujours à la commande whereis, faire de même dans windows télécharger whereis.exe puis définir le chemin et exécuter la commande
où est java.exe
où est javac.exe
Vous trouverez facilement le chemin exact à partir duquel java est appelé dans l’environnement, ainsi que javac.
Je suppose que lorsque vous écrivez javac
, vous obtenez la valeur de jre7
qui est actuellement utilisée par vous pour le développement et lorsque vous écrivez une java version
, vous obtenez la valeur de la version
du jre8
actuellement utilisée par le développeur. les applications installées sur votre système car votre JRE
du système est mentionné avant le jre7
que vous utilisez pour le développement
Après avoir entré le programme ou effectué un appel système, le système recherche d’abord dans le répertoire en cours, puis dans PATH
, en vérifiant chaque répertoire de gauche à droite sur un fichier exécutable correspondant à la commande. Lorsque le système localise le fichier exécutable, l’exécute (arrêt de la recherche).
Vous avez préinstallé le système JRE dans la variable d’environnement PATH
avant le JRE dont vous avez besoin.
Oui, il est vrai que pour gérer les versions incompatibles, nous devons modifier la variable PATH, et la commande where
(au moins sous Windows) est très utile pour savoir quel programme est sélectionné en premier. Il y a cependant une différence: quand vous regardez le contenu de votre y PATH var après avoir lancé, par exemple,
echo %path% > path.txt
Vous devez être conscient du fait que PATH est en fait composé de DEUX sections: l’une est System PATH et l’autre est Current User PATH , et c’est System Path qui est évalué en premier mais imprimé en dernier. Ainsi, placer simplement un chemin vers votre JDK, disons tout neuf, devant tout ce qui précède sera inutile tant qu’il y aura un autre endroit avec l’ancienne version quelque part dans le système PATH .
Ce problème particulier est particulièrement courant lorsque vous avez des entrées telles que
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath
dans votre chemin système . Déplacez-les simplement à la fin de votre section Current User PATH pour que ces entrées soient les dernières de la queue de recherche.