Windows игнорирует JAVA HOME: Как установить JDK по умолчанию?

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

этот вопрос был задан раньше, здесь и в другом месте:

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

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

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

Я предполагаю, что это проблема, характерная для 1.7, и Windows 7 делает то, что не должно с реестром.

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

редактировать: Упс. Я написал "первая запись в пути к классам" выше, когда я имел в виду "путь". Извиняюсь.

12 ответов


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

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

Итак, вам либо нужно изменить реестр, либо поставить версию Java вам хочу!--9-->до каталог Windows в PATH.


в Windows 8 может потребоваться удалить C:\ProgramData\Oracle\Java\javapath справочник.

по пути

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


у меня тоже есть эта проблема. Я запускаю 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. Я переименовал файлы таким образом, потому что это удалило их легко обратимым образом.

надеюсь, что это помогает!


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

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

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

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


у меня была та же проблема. У меня установлена куча версий 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 установил его в какой-то другой каталог уже в пути, таким образом, сначала используется вместо указанной записи пользовательского пути C:\jdk1.6.0_45_32\bin;


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

Я удалил этот текст из Пути, где мой путь уже имеет %JAVA_HOME%\bin С ним.

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


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


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


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

C:\ProgramData\Oracle\Java\javapath

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

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

C:\ProgramData\Oracle\Java\javapath;C:\Windows\System32;C:\Program Файлы\Java\jdk1.7.0_21\bin;

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

C:\Windows\System32;C:\Program файлы\Java\jdk1.7.0_21\bin;

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

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

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


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 path


здесь есть дополнительный фактор; в дополнение к исполняемым файлам java, которые установка java помещает туда, куда вы попросите их поместить, в windows, установщик java также помещает копии некоторых из этих исполняемых файлов в каталог Windows system32, поэтому вы, вероятно, будете использовать, который каждый исполняемый файл java был установлен совсем недавно.


на всякий случай, если вы используете .Файл BAT как служба Windows, я бы предложил удалить службу Windows и переустановить ее снова после изменения %JAVA_HOME%, чтобы указать правильную версию Java..