Windows ignore JAVA_HOME: comment définir JDK par défaut?


89

Comment persuader Windows d'utiliser le JDK au lieu d'un JRE?

Cette question a été posée avant, ici et ailleurs:

Comment définir l'installation / l'exécution par défaut de Java (Windows)?

Le problème est que Windows ignore JAVA_HOMEet ignore également le fait que j'ai fait du répertoire bin JDK la première entrée du chemin.

Lorsque je lance à java -versionpartir de la ligne de commande, au lieu d'appeler mon installation JDK 1.6, il exécute le 1.7 JRE.

Je suppose que c'est un problème spécifique à 1.7 et que Windows 7 fait quelque chose qu'il ne devrait pas faire avec le registre.

Des idées pour résoudre le problème?

Edit : Oups. J'ai écrit "première entrée dans le classpath" ci-dessus, alors que je voulais dire "chemin". Pardon.

Réponses:


132

Sous Windows, l' javaexécutable utilise le registre Windows pour localiser la version par défaut de Java à exécuter.

La copie de java.exeà exécuter est trouvée à l'aide de la PATHvariable d'environnement. À moins que vous ne preniez des mesures pour changer cela, par défaut, une copie sera trouvée dans le répertoire Windows. Étant donné que cette copie n'est pas dans un répertoire d'exécution Java, elle en localise un en consultant le registre.

Vous devez donc soit modifier le registre, soit placer la version de Java souhaitée avant le répertoire Windows dans votre fichier PATH.


11
OP ici. Voir ma modification ci-dessus. Ouais, cela l'a résolu. Deux remarques: tout d'abord, il semble que l'installateur Java a vraiment mis java.exe dans Windows \ System32. C'est stupéfiant pour moi. Deuxièmement, lorsque vous modifiez le chemin d'accès sous Ordinateur / Propriétés / Paramètres système avancés / Variables d'environnement, vous devez modifier le chemin système et non le chemin utilisateur . Le chemin du système se place en premier.
ccleve

2
Je soulignerai également le point de user237815 selon lequel il semble que le programme d'installation de Java supprime son java.exe dans Windows \ System32. Ce n'était certainement pas intuitif pour moi. Ce n'est qu'après avoir vérifié la "version java" à partir d'une console que j'ai obtenu le niveau de confort que Windows utilisait maintenant avec le java.exe que je voulais de mon installation JDK plutôt qu'une version précédente et indésirable.
John Tobler

17
Le problème a également été résolu dans mon cas en renommant java.exe, javaw.exe et javaws.exe dans mon dossier Windows / System32. Ensuite, et seulement alors, java -version affiche la version définie dans JAVA_HOME et le PATH
Inversus

6
Tu as sauvé ma journée! Le déplacement de l'entrée liée au JDK avant Windows dans PATH a résolu le problème. Merci beaucoup!
the_dark_destructor

9
Je mets %JAVA_HOME%\binen première position de pathvariable sur Windows 10 et travaille pour moi.
Wendel

30

Dans Windows 8, vous souhaiterez peut-être supprimer le C:\ProgramData\Oracle\Java\javapath répertoire.

du chemin

Cela a résolu mon problème.


5
Dans Windows 10, son: C: \ Program Files (x86) \ Common Files \ Oracle \ Java \ javapath. Cela est automatiquement ajouté à la variable de chemin système. Supprimez-le et définissez votre emplacement de chemin personnalisé.
Dexter

1
le commentaire ci-dessus a aidé dans le cas de Windows 10
Saba Ahang

23

J'ai ce problème aussi. J'utilise la version 1.6 mais je souhaite créer le code sur lequel je travaille avec la version 1.5. J'ai changé le JAVA_HOMEet PATH(utilisateur et système) en vain.

La réponse est que le programme d' installation de 1,6 a chuté java.exe, javaw.exeet javaws.exedans mon Windows\System32dossier (Windows 7).

Je l' ai résolu en renommant les fichiers java_wrong.exe, javaw_wrong.exeet javaws_wrong.exe. Ce n'est qu'après avoir fait cela qu'il récupère la version correcte de java telle que définie dans JAVA_HOMEet PATH. J'ai renommé les fichiers ainsi parce que cela les a supprimés d'une manière facilement réversible.

J'espère que cela t'aides!


10
Au lieu de renommer, vous pouvez modifier la variable PATH en spécifiant comme première valeur% JAVA_HOME% \ bin, de cette façon ce serait la première valeur qu'elle prendra
maxivis

1
@maxivis Merci. Je suppose que le problème pourrait avoir été l'ordre des éléments PATH de telle sorte que Windows \ System32 était avant JAVA_HOME. Je les ai simplement renommés pour qu'ils soient effectivement supprimés de manière réversible.
Inversus

En quelque sorte, définir JAVA_HOME dans le chemin ne fonctionnait en aucun cas pour moi, celui-ci l'a résolu.
Guilherme Orioli

12

Windows n'ignore rien. C'est un problème avec votre configuration; Windows utilise simplement ce que vous fournissez. Il n'a aucune connaissance particulière de JAVA_HOME.

CLASSPATHn'a rien à voir avec Windows non plus. Pour Windows, ce n'est qu'une variable d'environnement qui est étendue à un emplacement de dossier.

Vérifiez votre %PATH%variable environnementale. C'est ce qui fait que Windows trouve l'un avant l'autre. Le chemin (comme l'a dit le post auquel vous avez lié) doit pointer %JAVA_HOME%\bin;<remainder of path>. Encore une fois, la publication que vous avez liée vous a donné un moyen de définir cela à l'aide d'un fichier de commandes.

(Pour ceux qui ne le savent peut-être pas: le moyen le plus simple d'inspecter le% PATH% consiste à ouvrir une invite de commande et à taper echo %PATH%. Vous pouvez également y accéder en cliquant avec le bouton droit sur Computerdans le volet droit du menu Démarrer et en choisissant Properties, puis Advanced System Settings, et le Environmental Variablesbouton tne .)


@erickson: OK. Merci - je vais corriger cela. Cependant, cela n'a toujours rien à voir avec Windows, ce qui était le but de ma réponse. :)
Ken White

Compris, je craignais simplement qu'une nouvelle idée fausse puisse être créée; Java n'en sait rien de plus JAVA_HOMEque Windows.
erickson

J'apprécie la correction. Je ne suis pas une personne Java moi-même (expérience limitée à ce jour), il est donc bon de le savoir pour référence future.
Ken White

1
JAVA_HOMEdoit être défini sur la racine de l'installation java. Le chemin devrait avoir %JAVA_HOME%\bin;&lt;remainder of path%gt;, sinon vous finirez par ne pas "trouver" java, javac, etc. Bien sûr, Windows ne regarde vraiment que la PATHvariable, mais certains outils liés à java le regardent à l' JAVA_HOMEoccasion.
Edwin Buck

@Edwin: Correction des disparus \binégalement. Merci.
Ken White

6

J'ai eu le même problème. J'ai un tas de versions de Java installées et pour une raison quelconque, Java 1.7 était utilisé à la place de Java 1.6, même si j'ai spécifié dans le chemin pour utiliser 1.6 (C: \ jdk1.6.0_45_32 \ bin).

J'ai dû déplacer le chemin du JDK que je voulais utiliser (1.6) pour être la première entrée dans la variable d'environnement PATH pour m'assurer que Windows utilise 1.6 au lieu de 1.7.

Ainsi, par exemple, la variable d'environnement PATH avant était:

C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin

et après avoir déplacé le jdk pour être le premier, cela a fonctionné:

C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin

Je suppose que l'installateur Windows de Java 1.7 l'a installé dans un autre répertoire déjà dans le PATH, s'utilisant ainsi en premier au lieu de l'entrée PATH personnalisée spécifiée C: \ jdk1.6.0_45_32 \ bin;


Merci mon ami. Déplacer JAVA_HOME \ bin path comme premier élément de la variable Path m'a sauvé la vie.
ÖMER TAŞCI

4

Pour mon cas en 'Path'variable, un paramètre a été ajouté comme « C:\ProgramData\Oracle\Java\javapath;». Cet emplacement avait java.exe, javaw.exeet javaws.exede java 8 qui est nouvellement installé via jdk.exeOracle.

J'ai supprimé ce texte du chemin où mon chemin le contenait déjà %JAVA_HOME%\bin.

Maintenant, la variable 'JAVA_HOME'contrôle ma version Java que je voulais.


4

entrez la description de l'image iciSupposons que vous ayez installé JDK 10 après JDK 8 et dans le chemin de jeu de variables d'environnement système comme "C: \ ProgramData \ Oracle \ Java \ javapath" puis le contrôle de version Java par ce chemin. il ignorera JAVA_HOME même le chemin jdk 1.8 défini ici. Supprimez donc "C: \ ProgramData \ Oracle \ Java \ javapath" dans le chemin pour obtenir l'effet du chemin JAVA_HOME


2

J'ai installé Java 7 et 8 et je veux rediriger vers java 7 mais la version java dans ma fenêtre d'invite cmd montre Java 8.
Ajout du chemin du répertoire de Java 7 bin ( C: \ Program Files \ Java \ jdk1.7.0_10 \ bin ) à la variable PATH à la fin, mais n'a pas fonctionné et montre Java 8. J'ai donc changé le chemin Java 7 au début de la valeur du chemin et cela a fonctionné.
J'ai ouvert une nouvelle fenêtre d'invite cmd et vérifié ma version java et maintenant il montre Java 7


1

Définissez la variable d'environnement Path sur le répertoire jdk / bin souhaité


1

Dans mon cas, j'ai installé Java 7 et 8 (tous deux x64) et je souhaite rediriger vers java 7 mais tout est configuré pour utiliser Java 8. Java utilise la variable d'environnement PATH:

C: \ ProgramData \ Oracle \ Java \ javapath

comme première option pour rechercher son dossier d'exécution (est un dossier caché). Ce chemin contient 3 liens symboliques qui ne peuvent pas être modifiés.

Dans mon PC, la variable d'environnement PATH ressemble à ceci:

C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Windows \ System32; C: \ Program Files \ Java \ jdk1.7.0_21 \ bin;

Dans mon cas, cela devrait ressembler à ceci:

C: \ Windows \ System32; C: \ Program Files \ Java \ jdk1.7.0_21 \ bin;

J'ai dû couper et coller les liens symboliques ailleurs pour que java ne puisse pas les trouver, et je peux les restaurer plus tard.

Après avoir défini les variables d'environnement JAVA_HOME et JRE_HOME sur les environnements d'exécution des dossiers java souhaités (dans mon cas, il s'agit de Java 7), la commande java -versiondevrait afficher votre environnement d' exécution Java souhaité. Je remarque qu'il n'est pas nécessaire de jouer avec le registre.

Testé sur Win7 x64.


1

Ce problème est probablement dû aux versions antérieures de Java installées sur votre système. Vérifiez d'abord attentivement vos variables d'environnement et supprimez toutes les variables d'environnement liées aux versions précédentes de JAVA et remplacez

C:\Program Files\Java\<your new jdk version>\bin

0

Il y a un facteur supplémentaire ici; en plus des exécutables java que l'installation java place partout où vous lui demandez de les placer, sur windows, le programme d'installation java place également des copies de certains de ces exécutables dans votre répertoire windows system32, donc vous utiliserez probablement quel exécutable java était installé le plus récemment.


0

Juste au cas où vous utilisez un fichier .BAT comme service Windows, je vous suggère de désinstaller le service Windows et de le réinstaller après avoir changé le% JAVA_HOME% pour qu'il pointe vers la bonne version de Java.


0

Après avoir lutté avec ce problème pendant un certain temps et fait des recherches à ce sujet, j'ai finalement réussi à le résoudre en suivant ces étapes:

1) installez la version 12 de jdk
2) Créez une nouvelle variable dans la variable système
3) Nommez-la JAVA_HOME et indiquez le chemin d'installation de jdk
4) ajoutez cette variable dans le chemin et déplacez-la vers le haut.
5) allez dans C: \ Program Files (86) \ Common Files \ Oracle \ Java \ javapath et remplacez java.exe et javaw.exe par les fichiers correspondants avec les mêmes noms du dossier pathtojavajdk / bin

Enfin, j'ai vérifié la version par défaut de java dans cmd avec "java -version" et cela a fonctionné!

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.