Windows игнорирует JAVA_HOME: как установить JDK по умолчанию?
Как убедить Windows использовать JDK вместо JRE?
Этот вопрос задавался ранее здесь и в других местах:
Как установить стандартную установку Java/время выполнения (Windows)?
Проблема в том, что Windows игнорирует JAVA_HOME
и игнорирует тот факт, что я сделал каталог bin JDK первой записью в пути.
Когда я запускаю java -version
из командной строки, вместо вызова моей установки JDK 1.6, он запускает 1.7 JRE.
Я предполагаю, что это проблема, специфичная для 1.7, и Windows 7 делает то, что не следует делать с реестром.
Любые идеи о том, как это исправить?
Редактировать: Ой. Я написал "первую запись в classpath" выше, когда имел в виду "путь". Сожалею.
Ответы
Ответ 1
В Windows исполняемый файл java
использует реестр Windows для поиска версии Java по умолчанию.
Копия java.exe
для запуска найдена с помощью переменной среды PATH
. Если вы не предпримете шаги для его изменения, по умолчанию копия будет найдена в каталоге Windows. Поскольку эта копия не находится в каталоге времени выполнения Java, она находит ее, просматривая реестр.
Итак, вам нужно либо изменить реестр, либо поставить версию Java, которую вы хотите, перед каталогом Windows в PATH
.
Ответ 2
У меня тоже есть эта проблема. Я использую 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
. Я переименовал файлы таким образом, потому что это удалило их легко обратимым способом.
Надеюсь это поможет!
Ответ 3
В Windows 8 вы можете удалить
C:\ProgramData\Oracle\Java\javapath
каталог.
из пути
Он решил мою проблему.
Ответ 4
Windows ничего не игнорирует. Это проблема с вашей настройкой; Windows просто использует то, что вы предоставляете. Он не имеет специальных знаний о JAVA_HOME
.
CLASSPATH
не имеет ничего общего с Windows. Для Windows это только переменная окружения, которая расширяется до местоположения папки.
Проверьте переменную окружения %PATH%
. Это то, что заставляет Windows найти друг друга. Путь (как сообщение, связанное с указанным) должен указывать на %JAVA_HOME%\bin;<remainder of path>
. Опять же, сообщение, с которым вы связались, дало вам способ установить это с помощью пакетного файла.
(Для других, которые могут этого не знать: Самый простой способ проверить% PATH% - открыть командную строку и набрать echo %PATH%
. Вы также можете попасть туда, щелкнув правой кнопкой мыши по Computer
в правой панели меню "Пуск" и выберите Properties
, затем Advanced System Settings
и кнопку t Environmental Variables
.)
Ответ 5
У меня была такая же проблема. У меня есть набор Java-версий, и по какой-то причине вместо 1.7.1 использовался 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 установил его в какой-то другой каталог, уже находящийся в PATH, поэтому сначала используется вместо указанной пользовательской записи PATH C:\jdk1.6.0_45_32\bin;
Ответ 6
В моем случае в переменной '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, которая мне нужна.
Ответ 7
У меня были установлены 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
Ответ 8
Установите переменную окружения Path в желаемый каталог jdk/bin
Ответ 9
В моем случае я установил 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.
Ответ 10
Предположим, вы установили JDK 10 после JDK 8 и в пути набора переменных системной среды, например "C:\ProgramData\Oracle\Java\javapath", затем управляете версией Java по этому пути. он будет игнорировать JAVA_HOME, даже если путь jdk 1.8 установлен здесь. Поэтому удалите "C:\ProgramData\Oracle\Java\javapath" в пути, чтобы получить эффект пути JAVA_HOME
Ответ 11
Здесь есть дополнительный фактор; в дополнение к исполняемым файлам java, которые установка java ставит везде, где вы просите их поместить их, в windows, установщик java также помещает копии некоторых из этих исполняемых файлов в ваш каталог system32 для Windows, поэтому вы, вероятно, будете использовать, что каждый исполняемый файл java был установленный совсем недавно.
Ответ 12
На всякий случай, если вы используете .BAT файл в качестве службы Windows, я бы предложил удалить службу Windows и снова установить ее снова после изменения% JAVA_HOME%, чтобы указать на правильную версию Java.
Ответ 13
Эта проблема, вероятно, из-за более ранних версий Java, установленных в вашей системе. Сначала тщательно проверьте переменные среды и удалите все переменные среды, относящиеся к предыдущим версиям JAVA, и замените эти пути на
C:\Program Files\Java\<your new jdk version>\bin
Ответ 14
Поработав с этой проблемой в течение некоторого времени и изучив ее, мне наконец удалось решить ее, выполнив следующие шаги:
1) установить JDK версии 12
2) Создать новую переменную в системной переменной
3) Назовите его как JAVA_HOME и укажите путь установки jdk
4) добавьте эту переменную в путь и переместите ее наверх.
5) Перейдите в C:\Program Files (86)\Common Files\Oracle\Java\javapath и замените java.exe и javaw.exe соответствующими файлами с такими же именами из папки pathtojavajdk/bin.
Наконец, я проверил версию java по умолчанию в cmd с помощью "java -version", и это сработало!