J'ai défini Hava Java_HOME
à JDK11 dans la variable d'environnement des utilisateurs et PATH
contient %Java_HOME%/bin
.
Maintenant, je veux passer à JDK8 temporairement dans la commande-invite (cmd
) en modifiant Java_HOME
à JDK8 mais cela ne change pas de valeur dans path
ou Java -version
ne change pas dans l'instance actuelle de cmd.
P.S.- J'ai supprimé C:\Data de programme\Oracle\Java .. fichiers à éviter toute confusion
La raison en est que la référence variable dans PATH
est développée au moment de l'affectation à PATH
, les modifications ultérieures sont ignorées, la référence à la valeur d'origine est perdue. C'est comme faire une copie de la valeur de la variable, ne créant pas de référence à la variable.
set Java_HOME=C:\dir1
PATH=%Java_HOME%
set Java_HOME=C:\dir2
PATH
Cela produira C:\dir1
(valeur de Java_HOME
au moment de la mission) et pas %Java_HOME%
.
Vous avez besoin d'un script comme celui-ci pour appeler après une modification de Java_HOME
:
PATH=%Java_HOME%;C:\Windows\system32;C:\Windows;...
Je sais que la réponse est un peu tard, mais l'acceptée n'a pas travaillé pour moi, j'ai donc changé le code et fini par la solution suivante qui a fonctionné pour moi:
@echo off
echo Setting Java_HOME
setx -m Java_HOME "C:\Java\jdk-1.7.0_80"
echo setting PATH
setx -m PATH "%Java_HOME%\bin;%PATH%"
echo Display Java version
Java -version
setx -m
Modifie la variable System variable, mais si vous devez modifier la variable utilisateur, laissez simplement ce paramètre. Comme le script doit être exécuté avec des privilèges d'administrateur, j'ai enregistré le script sur le fichier% user_home% emplacement et créé un raccourci. Le raccourci peut être placé partout où vous le souhaitez. Une chose que vous devez changer aux propriétés du raccourci: Right-click the shortcut -> properties -> shortcut tab -> advanced -> run as administrator
. Cette solution a fonctionné parfaitement pour moi.