java -version et javac -version montrant différentes versions
J'ai java 7
et java 8
fois installé sur mon système windows sous C:\Program Files\Java
Dans le milieu du chemin, j'ai spécifié le chemin d'accès de java 7
comme ça.
%JAVA_HOME%/bin
où JAVA_HOME = C:\Program Files\Java\jdk1.7.0_17
Mais quand je tape javac -version
il montre javac 1.7.0_17
qui fait sens
mais quand je fais java -version
il 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)
Une idée de ce que peut être le problème?
Modifier Le dossier installé :
Et une chose de plus echo %PATH%
a une seule occurence de JDK
c'est pour java 7
et aucune occurence pour JRE
trouvé en elle.
source d'informationauteur SparkOn
Vous devez vous connecter pour publier un commentaire.
La question se présente plus probablement parce que vous avez un
JRE
dans votrepath
, avant votreJDK
. Cela se produit généralement lorsque nous ajoutons de JDK dans lepath
et ne retirez pas déjà ajouté des Jre. Ainsi, lorsque vous nejava
il pointe vers le JRE et quand vous ne lejavac
il des points à l'autre version/JDK (depuis jre ne pas avoir un javac)Edit: Depuis que vous l'avez édité votre question et affichée de ne pas avoir tout Jre sur votre chemin, Vous pouvez copier vos
%JAVA_HOME%
et le coller d'abord dans votre variable path (assurez-vous que son avant system32 chemin), j'ai été confronté à ce problème avant (lors de l'installation du sdk android) et de faire ce résolus.Également trouvé une explication possible de ce phénomène à partir de 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 l'avez dit que vous n'avez pas de JRE sur votre chemin, je suppose que
java
(si vous avez Windows 7) vous donneraC:\Windows\System32\java.exe
.La modification de la
java
l'exécution deEssayez d'utiliser le Java-boîte de Dialogue Paramètres à partir du panneau de commande pour changer la Java Version du Système, qui est actuellement actif. Cela devrait changer la version
java -version
est de retour. Si cela ne fonctionne pas, vous aurez probablement besoin de réinstaller la version Java de laquelle vous souhaitez exécuter lejava
commande, spécifiez le chemin d'accès explicitement, de vous écrire propre wrapper (qui fonctionne si vous êtes dans le même répertoire que le wrapper) ou sur place le JRE chemin avantC:\Windows\System32\
sur votre chemin (je ne sais pas si la dernière option est vraiment une bonne).Un wrapper pourrait ressembler à ceci:
et vous pouvez soit le nom qu'il
java.bat
(où il ne fonctionnera que si vous êtes dans le même répertoire ou dansPATH
avantC:\Windows\System32\java.exe
ou vous pouvez le nommerjava7.bat
et le mettre n'importe où sur le chemin pour être en mesure d'exécuter le Java JRE 7 si vous désirez le faire.Un wrapper est aussi une bonne option si vous souhaitez modifier le
JAVA_HOME
lors de l'exécution.La modification de la
javac
l'exécution deSi vous souhaitez exécuter un autre
javac
frappéWindows + Pause
et ouvrir la boîte de dialogue pour modifier lePATH
afin qu'il contient le chemin d'accès à votre JDK 8 à la place de votre JDK 7. Vous aurez besoin de redémarrer votre ligne de commande pour les changements de montrer.Pour résoudre ce genre de problèmes d'environnement, je crois toujours sur commande whereis,
Faire la même chose dans windows télécharger whereis.exe, puis mis dans le chemin et exécuter la commande
Vous pourrez facilement trouver le chemin exact de l'emplacement de java est appelé, de l'environnement ainsi sur javac.
Je suppose que quand vous écrivez
javac
c'est d'obtenir la valeur dejre7
qui est actuellement utilisé par vous à des fins de développement et quand vous écrivezjava version
c'est d'obtenir la valeur de laversion
de lajre8
qui est actuellement utilisé par les applications installées sur votre système, car votreJRE
du système est mentionné avant lejre7
qui vous aide pour le développementAprès l'entrée dans le programme ou d'effectuer un appel système, le système cherche d'abord dans le répertoire courant, puis dans le
PATH
la vérification de chaque répertoire de gauche à droite sur un fichier exécutable correspondant à la commande. Lorsque le système trouve le fichier exécutable, l'exécute (l'Arrêt de la recherche).Vous avez système pré-installé JRE dans le
PATH
variable d'environnement avant le JRE qui est vous avez besoin.Oui, il est vrai que pour faire face à la non-concordance des versions, nous devons modifier la variable PATH, et la
where
de commande (au moins, dans Windows) est très pratique pour trouver le programme qui est ramassé en premier.Il y a, cependant, une torsion:
quand vous regardez le contenu de votre CHEMIN var après l'exécution, par exemple,
vous devez être conscient du fait que le CHEMIN est en fait composé de DEUX sections: l'une est CHEMIN d'accès au Système et l'autre est Utilisateur Actuel CHEMINet il est Chemin d'accès au Système qui obtient d'abord évaluée, mais la dernière fois imprimée.
Donc, le simple fait de placer un chemin d'accès à votre, de dire, de marque-nouveau JDK devant tout sera inutile tant qu'il y a un autre endroit avec des versions plus anciennes, quelque part dans le CHEMIN d'accès au Système.
Ce problème est particulièrement fréquent lorsque vous avez des entrées telles que
dans votre CHEMIN d'accès au Système. Il suffit de les déplacer à la queue de votre Utilisateur Actuel CHEMIN section pour faire de ces inscriptions est le dernier dans la file d'attente de recherche.