Windows игнорирует JAVA_HOME: как установить JDK по умолчанию? - PullRequest
76 голосов
/ 31 марта 2011

Как мне убедить Windows использовать JDK вместо JRE?

Этот вопрос задавался ранее, здесь и в других местах:

Как установить стандартную установку Java / время выполнения (Windows)?

Проблема в том, что Windows игнорирует JAVA_HOME, а также игнорирует тот факт, что я сделал каталог bin JDK первой записью в пути.

Когда я запускаю java -version из командной строки, вместо того, чтобы вызывать мою установку JDK 1.6, он запускает 1.7 JRE.

Я предполагаю, что это проблема, специфичная для 1.7, и Windows 7 делает то, что не следует делать с реестром.

Есть идеи, как это исправить?

Редактировать : Упс. Я написал «первую запись в classpath» выше, когда имел в виду «путь». К сожалению.

Ответы [ 14 ]

121 голосов
/ 31 марта 2011

В Windows исполняемый файл java использует реестр Windows для поиска версии Java для запуска по умолчанию.

Копия java.exe для запуска находится с помощью переменной среды PATH.Если вы не предпримете шаги, чтобы изменить это, по умолчанию копия будет найдена в каталоге Windows.Поскольку эта копия не находится в каталоге времени выполнения Java, она находит его, просматривая реестр.

Итак, вам нужно либо изменить реестр, либо поставить нужную версию Java перед каталог Windows в вашем PATH.

23 голосов
/ 28 ноября 2015

В Windows 8 вы можете удалить каталог C:\ProgramData\Oracle\Java\javapath.

из пути

Это решило мою проблему.

21 голосов
/ 25 сентября 2012

У меня тоже есть эта проблема. Я использую 1.6, но хочу собрать код, над которым я работаю с 1.5. Я изменил JAVA_HOME и PATH (как пользователя, так и системы) безрезультатно.

Ответ заключается в том, что установщик для 1.6 сбросил java.exe, javaw.exe и javaws.exe в мою папку Windows\System32 (Windows 7).

Я решил это, переименовав эти файлы в java_wrong.exe, javaw_wrong.exe и javaws_wrong.exe. Только после этого он выбирает правильную версию Java, как определено в JAVA_HOME и PATH. Я переименовал файлы таким образом, потому что это удалило их легко обратимым способом.

Надеюсь, это поможет!

12 голосов
/ 31 марта 2011

Windows ничего не игнорирует. Это проблема с вашей настройкой; Windows просто использует то, что вы предоставляете. У него нет специальных знаний JAVA_HOME.

CLASSPATH тоже не имеет ничего общего с Windows. Для Windows это только переменная окружения, которая раскрывается в папку.

Проверьте переменную среды %PATH%. Это то, что заставляет Windows находить одну перед другой. Путь (как указано в сообщении, на которое вы ссылались) должен указывать на %JAVA_HOME%\bin;<remainder of path>. И снова пост, на который вы ссылались, дал вам возможность установить это с помощью командного файла.

(Для тех, кто может этого не знать: Самый простой способ проверить% PATH% - это открыть командную строку и ввести echo %PATH%. Вы также можете получить ее, щелкнув правой кнопкой мыши на Computer в правой панели. меню «Пуск» и выбрав Properties, затем Advanced System Settings и кнопку tne Environmental Variables.)

6 голосов
/ 14 сентября 2015

У меня была такая же проблема. У меня установлено несколько версий Java, и по какой-то причине Java 1.7 использовалась вместо Java 1.6, хотя я указал путь для использования 1.6 (C: \ jdk1.6.0_45_32 \ bin).

Мне пришлось переместить путь JDK, который я хотел использовать (1.6), чтобы быть первой записью в переменной среды PATH, чтобы убедиться, что Windows использует 1.6 вместо 1.7.

Так, например, переменная среды PATH ранее была:

C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin

и после того, как я переместил jdk на первое место, все заработало:

C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin

Я полагаю, что установщик Windows Java 1.7 установил его в какой-то другой каталог, уже находящийся в PATH, и, таким образом, сначала использовал вместо указанной пользовательской записи PATH C: \ jdk1.6.0_45_32 \ bin;

2 голосов
/ 04 мая 2018

enter image description here Предположим, что вы установили JDK 10 после JDK 8, и в пути набора переменных системной среды, например "C: \ ProgramData \ Oracle \ Java \ javapath", затем управление версиями Java по этому пути.он будет игнорировать JAVA_HOME, даже если путь jdk 1.8 установлен здесь. Поэтому удалите «C: \ ProgramData \ Oracle \ Java \ javapath» в пути, чтобы получить эффект пути JAVA_HOME

2 голосов
/ 11 октября 2017

У меня установлены Java 7 и 8, и я хочу перенаправить на Java 7, но версия Java в моем окне командной строки cmd показывает Java 8.
Путь к каталогу Java 7 bin ( C: \ Program Files \ Java \ jdk1.7.0_10 \ bin ) в конце к переменной PATH, но не сработал и показывает Java 8. Поэтому я изменил Java 7 путь к началу значения пути, и это сработало.
Открыл новое окно приглашения cmd и проверил мою версию Java, и теперь она показывает Java 7

2 голосов
/ 23 мая 2017

Для моего Case в переменной 'Path' был добавлен параметр типа 'C:\ProgramData\Oracle\Java\javapath;'. В этом расположении были java.exe, javaw.exe и javaws.exe из Java 8, который был недавно установлен через jdk.exe из Oracle.

Я удалил этот текст из Path, где у моего Path уже есть %JAVA_HOME%\bin.

Теперь переменная 'JAVA_HOME' контролирует мою версию Java, которая мне нужна.

1 голос
/ 24 июля 2017

В моем случае у меня были установлены Java 7 и 8 (обе x64), и я хочу перенаправить на Java 7, но все настроено на использование Java 8. Java использует переменную среды PATH:

C: \ ProgramData \ Oracle \ Java \ javapath

в качестве первого варианта поиска времени выполнения его папки (это скрытая папка).Этот путь содержит 3 символические ссылки, которые нельзя редактировать.

На моем компьютере переменная среды PATH выглядит следующим образом:

C: \ ProgramData \ Oracle \ Java \ javapath;C: \ Windows \ System32; C: \ Program Files \ Java \ jdk1.7.0_21 \ bin;

В моем случае это должно выглядеть так:

C: \ Windows \ System32; C: \ Program Files \ Java \ jdk1.7.0_21 \ bin;

Мне пришлось вырезать и вставлять символические ссылки в другое место, чтобы java не мог их найти,и я могу восстановить их позже.

После установки переменных среды JAVA_HOME и JRE_HOME на время выполнения желаемых папок Java (в моем случае это Java 7), команда java -version должна показать желаемое время выполнения Java.Замечу, что не нужно связываться с реестром.

Протестировано на Win7 x64.

1 голос
/ 31 марта 2011

Установите переменную среды Path в желаемую директорию jdk / bin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...