Windows игнорирует JAVA HOME: Как установить JDK по умолчанию?
Как мне убедить Windows использовать JDK вместо JRE?
этот вопрос был задан раньше, здесь и в другом месте:
Как установить установку Java по умолчанию / время выполнения (Windows)?
беда в том, что Windows игнорирует JAVA_HOME
и он также игнорирует тот факт, что я сделал каталог JDK bin первой записью в пути.
когда я запускаю java -version
из командной строки, вместо вызова моей установки JDK 1.6, он работает на 1.7 версии.
Я предполагаю, что это проблема, характерная для 1.7, и Windows 7 делает что-то, чего не должно быть с реестром.
есть идеи, как это исправить?
Edit: Упс. Я написал "первая запись в classpath" выше, когда я имел в виду "путь". Извиняюсь.
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%
переменные среды. Это то, что делает окна найти один перед другим. Путь (как сообщение, которое вы связали с said) должен указывать на%JAVA_HOME%\bin;<remainder of path>
. Опять же, сообщение, с которым вы связались, дало вам возможность установить это с помощью пакетного файла.(для тех, кто может этого не знать: Самый простой способ проверить %PATH% - открыть командную строку и ввести
echo %PATH%
. Вы также можете попасть, нажав правой кнопкой мыши наComputer
в правой панели меню "Пуск" и выберитеProperties
, потомAdvanced System Settings
, и тне .)
у меня была та же проблема. У меня установлена куча версий Java, и по какой-то причине вместо Java 1.6 использовалась Java 1.7, хотя я указал в пути к использованию 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 в моем окне командной строки показывает Java 8.
Добавлен путь к каталогу Java 7 bin (C:\Program файлы\Java\jdk1.7. 0_10\bin) к переменной PATH в конце, но не получилось и показывает Java 8. Поэтому я изменил путь Java 7 на начало значения пути, и это сработало.
Открыл новое окно командной строки cmd и проверил мою версию java, и теперь он показывает Java 7
в моем случае у меня были установлены 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 Файлы\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.
предположим, что вы установили 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 был установлен совсем недавно.