32 votes

Quelle est la différence entre "system32 \java.exe "et "Program Files \Java\jdk1.6.0_33\bin\java.exe " ?

Je viens d'installer Java JDK 6u33 dans Windows XP. Bien que je n'aie pas défini la variable d'environnement PATH, je suis en mesure d'exécuter java -version dans l'invite de commande.

Quand je lance cette commande for %i in (java.exe) do @echo. %~$PATH:i j'obtiens ce résultat : C:\WINDOWS\system32\java.exe

Quand j'ai vérifié mon PC, j'ai constaté qu'il y a 2 java.exe :
1. C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
2. C:\WINDOWS\system32\java.exe

Puis-je savoir quelle est la différence entre system32\java.exe et Program Files\Java\jdk1.6.0_33\bin\java.exe ? Pourquoi seulement system32\java.exe s'affiche lorsque j'exécute for %i in (java.exe) do @echo. %~$PATH:i ?

Dois-je encore ajouter C:\Program Files\Java\jdk1.6.0_33\bin\ à ma variable d'environnement PATH ?

29voto

Mattias Points 5639

Fixer le PATH est juste pour que vous puissiez avoir accès à javac et les autres programmes et outils dans le dossier bin de jdk.

Le site java.exe sur \windows\system32\ est fourni pour que tout le monde n'ait pas besoin de définir une variable PATH juste pour exécuter un programme Java (à partir de la ligne de commande). et sélectionne une version (la dernière installée semble-t-il) des machines virtuelles java (JVM) installées s'il y en a plus d'une (publiquement) installée.

Voir ce lien pour plus d'informations :

http://mindprod.com/jgloss/javaexe.html#MULTIPLES

Citation :

Pour compliquer encore les choses, le java.exe de system32 n'est qu'un leurre. Il regarde dans le registre et décide ensuite quel vrai java.exe utiliser. La dernière JVM installée est celle qui est utilisée, même si elle est plus ancienne. Pour changer de JVM, vous devez normalement réinstaller celle que vous voulez.

12voto

Urhixidur Points 405

(Pas une réponse mais plutôt un commentaire sur la réponse de Mattias) Je ne suis pas sûr de cette histoire de "dummy". Le java.exe dans system32 est un fichier normal, pas même un lien symbolique ou un lien dur. Mattias fait peut-être référence au problème qui est expliqué ici : http://msdn.microsoft.com/en-us/library/aa384187

En bref, si vous disposez d'un système 64 bits et d'une installation Java, les applications 32 bits ne verront pas le fichier java.exe (ni javaw.exe, javaws.exe) qui est installé dans l'application C:\Windows\System32\ parce qu'on leur présentera C:\Windows\SysWoW64\ se faisant passer pour C:\Windows\System32. Le programme d'installation ne parvient pas à placer une copie de java.exe dans SysWoW64, ce qui fait qu'une application 32 bits qui tente de lancer Java n'y parviendra pas. Cela rendra l'utilisateur perplexe s'il regarde dans le répertoire system32 en utilisant l'explorateur, puisque l'explorateur est une application 64 bits et verra donc le "vrai" répertoire system32.

0voto

Betlista Points 2944

(Ceci n'est pas non plus une réponse, mais juste un commentaire pour le commentaire de @RealHowTo)

C'est bien, que nous ayons quelques références pour -version mais d'après mon test, cela ne fonctionne pas comme prévu.

J'ai installé le JDK (1.7.0_05) avant, mais j'ai ensuite installé la mise à jour du JRE (1.7.0_55).

c:\>set j
JAVA_HOME=c:\Java\jdk1.7.0_05

mais quand j'ai essayé

c:\>java -version:"1.7.0_05"
Error: Unable to locate JRE meeting specification "1.7.0_05"

bien sûr il y a JRE dans le dossier JDK (c : \Java\jdk1.7.0_05\jre\bin ) comme d'habitude et cela fonctionne bien

c:\>c:\Java\jdk1.7.0_05\jre\bin\java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

triste histoire...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X