Comment persuader Windows d'utiliser le JDK au lieu d'un JRE?
Cette question a déjà été posée ici et ailleurs:
Comment définir l'installation/le runtime Java (Windows) par défaut?
Le problème est que Windows ignore Java_HOME
et le fait que j'ai fait du répertoire bin JDK la première entrée du chemin.
Lorsque je lance Java -version
à partir de la ligne de commande, au lieu d'appeler mon installation JDK 1.6, il exécute le JRE 1.7.
Mon hypothèse est qu'il s'agit d'un problème spécifique à la version 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: Oops. J'ai écrit "première entrée dans le classpath" ci-dessus, alors que je voulais dire "chemin". Pardon.
Sous Windows, l'exécutable Java
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 variable d'environnement PATH
. À moins que vous ne preniez des mesures pour changer cela, une copie se trouve par défaut dans le répertoire Windows. Comme cette copie ne se trouve pas dans un répertoire d'exécution Java, il en recherche un en consultant le registre.
Vous devez donc modifier le registre ou placer la version de Java de votre choix avant le répertoire Windows dans votre PATH
.
J'ai aussi ce problème. Je suis en cours d'exécution 1.6, mais je veux construire le code sur lequel je travaille avec 1.5. J'ai changé les Java_HOME
et PATH
(utilisateur et système) en vain.
La réponse est que le programme d'installation de la version 1.6 a supprimé Java.exe
, javaw.exe
et javaws.exe
dans mon dossier Windows\System32
(Windows 7).
Je l'ai résolu en renommant ces fichiers en Java_wrong.exe
, javaw_wrong.exe
et javaws_wrong.exe
. Ce n’est qu’après cela qu’il récupère la version correcte de Java, telle que définie dans Java_HOME
et 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!
Sous Windows 8, vous souhaiterez peut-être supprimer C:\ProgramData\Oracle\Java\javapath
directory.
de chemin
Cela a résolu mon problème.
Windows n'ignore rien. Ceci est un problème avec votre configuration. Windows utilise simplement ce que vous fournissez. Il n'a pas de connaissance particulière de Java_HOME
.
CLASSPATH
n'a rien à voir avec Windows non plus. Pour Windows, seule une variable d'environnement est étendue à un dossier.
Vérifiez votre variable d'environnement %PATH%
. C'est ce qui fait que Windows trouve l'un avant l'autre. Le chemin (comme le message auquel vous avez lié) doit pointer sur %Java_HOME%\bin;<remainder of path>
. Encore une fois, la publication que vous avez liée vous a fourni un moyen de définir cela à l'aide d'un fichier de traitement par lots.
(Pour les autres qui ne le sauraient peut-être pas: le moyen le plus simple d'inspecter% PATH% consiste à ouvrir une invite de commande et à taper echo %PATH%
. Vous pouvez également y accéder en cliquant avec le bouton droit sur Computer
dans le volet de droite du menu Démarrer et en choisissant Properties
, puis Advanced System Settings
et le bouton Environmental Variables
.)
J'ai eu le même problème. Plusieurs versions de Java sont 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 d’utilisation 1.6 (C:\jdk1.6.0_45_32\bin).
Je devais déplacer le chemin du JDK que je voulais utiliser (1.6) pour être la première entrée de la variable d'environnement PATH afin de m'assurer que Windows utilise 1.6 au lieu de 1.7.
Ainsi, par exemple, la variable d’environnement PATH était auparavant:
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à présent dans PATH, s’utilisant ainsi au lieu de l’entrée PATH personnalisée spécifiée C:\jdk1.6.0_45_32\bin;
J'avais Java 7 et 8 installés et je veux rediriger vers Java 7, mais la version Java dans la fenêtre Invite cmd affiche Java 8.
Ajouté le chemin du répertoire bin de Java 7 ( C:\Program Files\Java\jdk1.7.0_10\bin ) à la variable PATH à la fin, mais n’a pas fonctionné et affiche Java 8. J'ai donc modifié le Java 7 chemin au début de la valeur du chemin et cela a fonctionné.
Ouvert une nouvelle fenêtre Invite cmd et vérifié ma version de Java et maintenant il montre Java 7
Pour mon variable Case dans la variable 'Path'
, un paramètre a été ajouté, comme 'C:\ProgramData\Oracle\Java\javapath;
'. Cet emplacement contenait Java.exe
, javaw.exe
et javaws.exe
de Java 8, qui vient d'être installé via jdk.exe
à partir d'Oracle.
J'ai supprimé ce texte de Path où mon chemin avait déjà %Java_HOME%\bin
avec.
Maintenant, la variable 'Java_HOME'
contrôle ma version de Java que je voulais.
Supposons que vous avez installé JDK 10 après JDK 8 et que le chemin d'accès à la variable d'environnement système est défini sur "C:\ProgramData\Oracle\Java\javapath", puis le contrôle de version Java par ce chemin. il ignorera le chemin Java_HOME même le chemin jdk 1.8 défini iciPour supprimer "C:\ProgramData\Oracle\Java\javapath" dans le chemin pour obtenir un effet du chemin Java_HOME
Dans mon cas, j’avais Java 7 et 8 (les deux x 64) installés 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 édités.
Dans mon pc, la variable d'environnement PATH ressemble à ceci:
C:\ProgramData\Oracle\Java\javapath; C:\Windows\System32; C:\Programme Fichiers\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 vers un autre emplacement afin que Java ne puisse pas les trouver et que je puisse 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 -version
doit 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.
Définissez la variable d’environnement Path sur votre répertoire jdk/bin souhaité.
Après avoir lutté avec ce problème pendant un certain temps et effectué des recherches à ce sujet, j'ai finalement réussi à le résoudre en procédant comme suit:
1) installer jdk version 12
2) Créer une nouvelle variable dans la variable systèmes
3) Nommez-le Java_HOME et donnez le chemin d'installation de jdk
4) ajoutez cette variable dans chemin et déplacez-la en haut.
5) Allez dans C:\Program Files (86)\Fichiers communs\Oracle\Java\javapath et remplacez Java.exe et javaw.exe par les fichiers correspondants portant le même nom dans le dossier pathtojavajdk/bin.
Enfin, j'ai vérifié la version par défaut de Java dans cmd avec "Java -version" et cela a fonctionné!
Ce problème est probablement dû aux versions antérieures de Java installées sur votre système . Commencez par vérifier soigneusement les variables d’environnement, supprimez toutes les variables d’environnement associées aux versions précédentes de Java et remplacez ces chemins par:
C:\Program Files\Java\<your new jdk version>\bin
Juste au cas où vous utiliseriez un fichier .BAT comme service Windows, je suggérerais de désinstaller le service Windows, puis de le réinstaller après avoir modifié le% Java_HOME% pour qu'il pointe vers la bonne version de Java.
Il y a un facteur supplémentaire ici; En plus des exécutables Java que l'installation Java place partout où vous le demandez, sous Windows, le programme d'installation Java place également des copies de ces exécutables dans votre répertoire windows system32. installé le plus récemment.