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" выше, когда я имел в виду "путь". Сожалею.
19 ответов
В Windows java
Исполняемый файл использует реестр Windows, чтобы найти версию Java по умолчанию для запуска.
Копия java.exe
для запуска находится с помощью PATH
переменная окружения. Если вы не предпримете шаги, чтобы изменить это, по умолчанию копия будет найдена в каталоге Windows. Поскольку эта копия не находится в каталоге времени выполнения Java, она находит его, просматривая реестр.
Поэтому вам нужно либо изменить реестр, либо указать нужную версию Java перед каталогом 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%
переменная среды Это то, что заставляет Windows находить одну перед другой. Путь (как указано в сообщении, на которое вы ссылались) должен указывать на %JAVA_HOME%\bin;<remainder of path>
, Опять же, пост, на который вы ссылались, дал вам возможность установить это с помощью командного файла.
(Для тех, кто не знает этого: самый простой способ проверить%PATH% - это открыть командную строку и набрать echo %PATH%
, Вы также можете попасть туда, щелкнув правой кнопкой мыши на Computer
в правой панели меню Пуск и выбрав Properties
, затем Advanced System Settings
и тнэ Environmental Variables
кнопка.)
Я была такая же проблема. У меня установлено несколько версий 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;
Предположим, что вы установили JDK 10 после JDK 8 и в пути набора переменных системной среды, например "C:\ProgramData\Oracle\Java\javapath", затем управление версиями Java по этому пути. он будет игнорировать JAVA_HOME, даже если путь jdk 1.8 установлен здесь. Поэтому удалите "C:\ProgramData\Oracle\Java\javapath" в пути, чтобы получить эффект пути JAVA_HOME
Для моего случая в 'Path'
переменная был добавлен параметр, как 'C:\ProgramData\Oracle\Java\javapath;
". Это место было java.exe
, javaw.exe
а также javaws.exe
с Java 8, который недавно установлен через jdk.exe
от Oracle.
Я удалил этот текст из пути, где мой путь уже имеет %JAVA_HOME%\bin
с этим.
Теперь переменная 'JAVA_HOME'
контролирует мою версию Java, которую я хотел.
Установите переменную окружения Path в желаемую директорию jdk/bin
У меня были установлены 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
В моем случае у меня были установлены 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.
Удалите C: \ ProgramData \ Oracle \ Java \ javapath из пути в системных переменных и добавьте собственное значение для переменной JAVA_HOME для переменных пользователя. Это будет работать в Windows 10.
Эта проблема, вероятно, из-за более ранних версий Java, установленных в вашей системе. Сначала тщательно проверьте переменные среды и удалите все переменные среды, связанные с предыдущими версиями JAVA, и замените эти пути на
C:\Program Files\Java\<your new jdk version>\bin
Люди, которые ответили, заявив, что установка переменной PATH должна работать, объясните это:
Вам необходимо удалить запись C:\Program Files (x86)\Common Files\Oracle\Java\javapath из PATH и убедиться, что у вас есть запись %JAVA_HOME%\bin в PATH и определена JAVA_HOME.
Я столкнулся с той же проблемой. У меня была Java-версия 8,11. У меня были эти два на моем пути C: \ Program Files \ Java \ jdk1.8.0_51 \ bin
C: \ ProgramData \ Oracle \ Java \ javapath Что я сделал, я изменил jdk на%JAVA_HOME% \ bin вот так и переименовал каталог (C: \ ProgramData \ Oracle \ Java \ javapath) javapath в javapath1, и это решает мою проблему.
переместите %JAVA_HOME%\bin в начало PATH в переменной системной среды
%JAVA_HOME%\bin;<rest of your PATH variables>
На всякий случай, если вы используете файл.BAT в качестве службы Windows, я бы предложил удалить службу Windows и переустановить ее снова после изменения%JAVA_HOME%, чтобы указать правильную версию Java..
Здесь есть дополнительный фактор; В дополнение к исполняемым файлам java, которые установка java помещает туда, куда вы просите их поместить, в windows, установщик java также помещает копии некоторых из этих исполняемых файлов в каталог вашей системы windows32, так что вы, скорее всего, будете использовать каждый исполняемый файл java. Установлено совсем недавно.
Поработав с этой проблемой в течение некоторого времени и изучив ее, мне наконец удалось решить ее, выполнив следующие шаги:
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", и это сработало!
У меня была такая же проблема, в настройках переменных пользовательской среды у меня были правильно настроены JAVA_HOME и PATH, но это не сработало. Когда я обновляю переменные системной среды, он начал работать.