Переключение между различными версиями JDK в Windows

Я работаю над несколькими проектами, и некоторые из них используют разные JDK. Переключение между версиями JDK не удобно. Поэтому мне было интересно, есть ли простой способ изменить его?

Я нашел 2 способа, которые должны решить эту проблему, но это не работает.

первым решением является создание файлов bat, как это:

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:Program FilesJavajdk1.7.0_72
echo setting PATH
set PATH=C:Program FilesJavajdk1.7.0_72bin;%PATH%
echo Display java version
java -version
pause

и после запуска этой летучей мыши я вижу правильную версию Java. Но когда я закрываю этот CMD и открываю новый и набираю " java-версия" он говорит, что у меня все еще есть 1.8.0_25. Так что это не работает.

второе решение, которое я нашел-это приложение этой сайт. И это тоже не работает. Тот же эффект, что и в первом решении.

какие идеи? Потому что изменение JAVA_HOME и PAHT: Win + Pause - > расширенные Системные настройки - > Переменные среды - > и редактирование этих переменных-ужасный способ...

3 ответов


на set команда работает только для текущего терминала. Для постоянной установки системной или пользовательской переменной среды можно использовать setx.

setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_72" /m

на /m опция используется для установки переменной в системе (и не только для текущего пользователя). Для использования этой опции терминал должен быть запущен от имени администратора.

переменная будет доступна во всех новых окнах терминала, но не в текущем. Если вы хотите отобразить путь в то же окно, вам нужно использовать оба set и setx.

вы можете избежать манипулирования PATH переменная, если вы только один раз поставили %JAVA_HOME% там, вместо полного пути JDK. Если вы измените JAVA_HOME, PATH будет обновлено.


существует также несколько редакторов переменных среды в качестве альтернативы громоздким настройкам переменных среды Windows. См."есть ли удобный способ редактирования пути в Windows 7?" по супер Пользователь.


Если ваш путь имеет менее 1024 символов, можно выполнить (запуск от имени администратора) этот скрипт:

@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

Если более 1024, попробуйте удалить некоторые ненужные пути или можете изменить эти сценарии с некоторыми входными данными из https://superuser.com/questions/387619/overcoming-the-1024-character-limit-with-setx


  1. открыть Environment Variables editor (File Explorer > щелкните правой кнопкой мыши на Этот ПК > свойства > дополнительные системные настройки > окружающая среда Переменная...)
  2. найти Path переменная системные переменные список > нажмите Edit > put %JAVA_HOME%bin; в первой позиции. Это необходимо потому что Java installer добавляет C:\Program Files (x86)\Common Files\Oracle\Java\javapath до PATH который ссылается на последнюю установленную версию Java. enter image description here
  3. теперь вы можете переключаться между Java версия с использованием (должен быть запущен с правами администратора):

    setx /m JAVA_HOME "c:\Program Files\Java\jdk-10.0.1\
    

    (Примечание: в конце строки нет двойной кавычки и не должно быть или вы получите c:\Program Files\Java\jdk-10.0.1\" в своем JAVA_HOME переменная и она ломает ваш PATH переменной)

решение с системными переменными (и административными разрешениями) является более надежным, потому что оно помещает желаемый путь к Java в начале результирующего PATH переменная.