Je travaille sur quelques projets et certains utilisent différents JDK. Basculer entre les versions de JDK n’est pas confortable. Alors je me demandais s'il y avait un moyen facile de le changer?
J'ai trouvé 2 façons, ce qui devrait résoudre ce problème, mais cela ne fonctionne pas.
La première solution est de créer un fichier bat comme ceci:
@echo off
echo Setting Java_HOME
set Java_HOME=C:\Program Files\Java\jdk1.7.0_72
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.7.0_72\bin;%PATH%
echo Display Java version
Java -version
pause
Et après avoir exécuté cette batte, je vois la bonne version de Java. Mais lorsque je ferme ce CMD, que j'en ouvre un nouveau et que je tape "Java -version", cela signifie que j'ai toujours la version 1.8.0_25. Donc ça ne marche pas.
La deuxième solution que j'ai trouvée est une application de this site. Et ça ne marche pas non plus. Le même effet que dans la première solution.
Des idées? Parce que changer Java_HOME et PAHT par: Win + Pause -> Paramètres système avancés -> Variables d'environnement -> et éditer ces variables, est terrible ...
La commande set
ne fonctionne que pour le terminal actuel. Pour définir de manière permanente une variable d’environnement système ou utilisateur, vous pouvez utiliser setx
.
setx Java_HOME "C:\Program Files\Java\jdk1.7.0_72" /m
L'option /m
permet de définir la variable à l'échelle du système (et pas seulement pour l'utilisateur actuel). Le terminal doit être exécuté en tant qu'administrateur pour utiliser cette option.
La variable sera disponible dans toutes les nouvelles fenêtres de terminal, mais pas dans la fenêtre actuelle. Si vous souhaitez afficher le chemin dans la même fenêtre, vous devez utiliser set
et setx
.
Vous pouvez éviter de manipuler la variable PATH
en insérant une seule fois %Java_HOME%
à la place du chemin d'accès JDK complet. Si vous changez Java_HOME
, PATH
sera également mis à jour.
Il existe également quelques éditeurs de variables d’environnement en guise d’alternative aux encombrants paramètres de variables d’environnement Windows. Voir " Existe-t-il un moyen pratique d’éditer PATH dans Windows 7? " en mode super utilisateur.
Environment Variables
(Explorateur de fichiers> cliquez avec le bouton droit de la souris sur Cet ordinateur> Propriétés> Paramètres système avancés> Environnement Variables ...).Path
dans Variables systèmeliste> Appuyez sur Édition> mettre %Java_HOME%bin;
en première position. Ceci est requis Car le programme d'installation de Java ajoute C:\Program Files (x86)\Common
Files\Oracle\Java\javapath
à la PATH
, qui fait référence à la dernière version de Java installée. Vous pouvez maintenant basculer entre les versions Java à l'aide de la commande setx
(doit être exécuté sous des autorisations administratives):
setx /m Java_HOME "c:\Program Files\Java\jdk-10.0.1\
(note: il n'y a pas de guillemet double à la fin de la ligne et ne devrait pas être ou vous obtiendrez c:\Program Files\Java\jdk-10.0.1\"
dans votre variable Java_HOME
et cela cassera votre variable PATH
La solution avec les variables système (et les autorisations administratives) est plus robuste car elle place le chemin souhaité vers Java au début de la variable PATH
résultante.
Si votre chemin contient moins de 1024 caractères, ce script peut être exécuté (Exécuter en tant qu'administrateur):
@echo off
set "Java5_FOLDER=C:\Java\jdk1.5.0_22"
set "Java6_FOLDER=C:\Java\jdk1.6.0_45"
set "Java7_FOLDER=C:\Java\jdk1.7.0_80"
set "Java8_FOLDER=C:\Java\jdk1.8.0_121"
set "Java9_FOLDER=C:\Java\jdk-10.0.1"
set "CLEAR_FOLDER=C:\xxxxxx"
(echo "%PATH%" & echo.) | findstr /O . | more +1 | (set /P RESULT= & call exit /B %%RESULT%%)
set /A STRLENGTH=%ERRORLEVEL%
echo path length = %STRLENGTH%
if %STRLENGTH% GTR 1024 goto byebye
echo Old Path: %PATH%
echo ===================
echo Choose new Java Version:
echo [5] JDK5
echo [6] JDK6
echo [7] JDK7
echo [8] JDK8
echo [9] JDK10
echo [x] Exit
:choice
SET /P C=[5,6,7,8,9,x]?
for %%? in (5) do if /I "%C%"=="%%?" goto JDK_L5
for %%? in (6) do if /I "%C%"=="%%?" goto JDK_L6
for %%? in (7) do if /I "%C%"=="%%?" goto JDK_L7
for %%? in (8) do if /I "%C%"=="%%?" goto JDK_L8
for %%? in (9) do if /I "%C%"=="%%?" goto JDK_L9
for %%? in (x) do if /I "%C%"=="%%?" goto byebye
goto choice
@echo on
:JDK_L5
set "NEW_PATH=%Java5_FOLDER%"
goto setPath
:JDK_L6
@echo off
set "NEW_PATH=%Java6_FOLDER%"
goto setPath
:JDK_L7
@echo off
set "NEW_PATH=%Java7_FOLDER%"
goto setPath
:JDK_L8
@echo off
set "NEW_PATH=%Java8_FOLDER%"
goto setPath
:JDK_L9
@echo off
set NEW_PATH = %Java9_FOLDER%
:setPath
Call Set "PATH=%%PATH:%Java5_FOLDER%=%CLEAR_FOLDER%%%"
Call Set "PATH=%%PATH:%Java6_FOLDER%=%CLEAR_FOLDER%%%"
Call Set "PATH=%%PATH:%Java7_FOLDER%=%CLEAR_FOLDER%%%"
Call Set "PATH=%%PATH:%Java8_FOLDER%=%CLEAR_FOLDER%%%"
Call Set "PATH=%%PATH:%Java9_FOLDER%=%CLEAR_FOLDER%%%"
rem echo Interim Path: %PATH%
Call Set "PATH=%%PATH:%CLEAR_FOLDER%=%NEW_PATH%%%"
setx PATH "%PATH%" /M
call set "Java_HOME=%NEW_PATH%"
setx Java_HOME %Java_HOME%
echo New Path: %PATH%
:byebye
echo
Java -version
pause
Si plus de 1024, essayez de supprimer certains chemins inutiles, ou pouvez modifier ce script avec des entrées de https://superuser.com/questions/387619/overcoming-the-1024-character-limit-with-setx