web-dev-qa-db-fra.com

Basculement entre différentes versions de JDK sous Windows

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 ...

14
Lui

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.

15
kapex
  1. Ouvrez l'éditeur 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 ...).
  2. Recherchez la variable 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.  enter image description here
  3. 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.

0
Lu55

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

0
Conete Cristian