1

Я определил JAVA_HOME для jdk11 в переменной среды пользователя, и PATH содержит %JAVA_HOME%/bin .

Теперь я хочу временно переключиться на jdk8 в командной строке (cmd), изменив JAVA_HOME на jdk8, но это не меняет значения в path или java -version не изменится в текущем экземпляре cmd.

PS - я удалил файлы c:\Program Data\Oracle\java .., чтобы избежать путаницы

2 ответа2

2

Это не меняет значение в пути или java -version не изменяется в текущем экземпляре cmd

Чтобы изменения вступили в силу, необходимо перезапустить cmd поскольку оболочка cmd наследует ее среду от родительского процесса.


Итак, как правильно переключаться между версиями Java из командной строки?

Используйте набор командных файлов следующим образом:

Будучи разработчиком Java, я всегда компилирую и тестирую свой код на разных версиях Java. Но переключение между ними - огромная проблема. Наконец, я нашел простой способ сделать это. Вы должны создать следующие командные файлы и поместить их в каталог, в котором вы открываете командную строку или в SYSTEM PATH. Вы можете использовать ваш любимый текстовый редактор для создания этих файлов.

jdk14.bat

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\j2sdk1.4.2_12
echo setting PATH
set PATH=C:\j2sdk1.4.2_12\bin;%PATH%
echo Display java version
java -version

jdk15.bat

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.5.0_12\bin;%PATH%
echo Display java version
java -version

jdk16.bat

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.6.0_11\bin;%PATH%
echo Display java version
java -version

Убедитесь, что вы присвоили соответствующее значение JAVA_HOME в пакетных файлах в соответствии с вашей установкой Java. Всякий раз, когда вы хотите переключиться между версиями Java, просто запустите соответствующий пакетный файл, и все готово.

Примечание: JAVA_HOME и путь к java всегда должны ссылаться на одну и ту же версию JDK . Если вы перепутаете их, произойдут непредсказуемые вещи!

Source Switch между различными версиями JDK в Windows | Блог Оракула Пранава

0

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

set JAVA_HOME=C:\dir1
PATH=%JAVA_HOME%
set JAVA_HOME=C:\dir2
PATH

Это выведет C:\dir1 (значение JAVA_HOME на момент назначения), а не %JAVA_HOME% .

Вам нужен такой скрипт для вызова после изменения JAVA_HOME:

PATH=%JAVA_HOME%;C:\Windows\system32;C:\Windows;...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .