Как установить стандартную установку Java / время выполнения (Windows)?
Я нахожусь в ситуации, когда я установил JDK, но я не могу запустить апплеты в браузерах (возможно, я не установил JRE).
Однако, когда я устанавливаю JRE, он забивает мой JDK в качестве среды выполнения по умолчанию. Это ломает практически все (Eclipse, Ant) - так как им требуется серверная JVM.
Нет никаких JAVA_HOME
переменная окружения в наши дни - кажется, она использует магию реестра (установка системного пути также бесполезна). Ранее я только что удалил JRE после того, как использовал его для восстановления JDK. На этот раз я хочу исправить это правильно.
Это также проявляется в jre autoupdater - когда-то у меня была рабочая установка с JDK и JRE, но она обновила и разорила все.
7 ответов
Это немного болезненно для Windows. Вот что я делаю.
Установите последнюю версию Sun JDK, например, 6u11, по пути c:\install\jdk\sun\6u11
, затем позвольте установщику установить общедоступную JRE в место по умолчанию (c:\program files\blah
). Это установит ваш JRE по умолчанию для большинства вещей.
При необходимости установите старые JDK, например 5u18 в c:\install\jdk\sun\5u18
, но не устанавливайте общедоступные JRE.
В процессе разработки у меня есть небольшой командный файл, который я использую для настройки командной строки для каждой версии JDK. По сути просто установить JAVA_HOME=c:\jdk\sun\JDK_DESIRED
а затем установить PATH=%JAVA_HOME%\bin;%PATH%
, Это поставит желаемый JDK на первое место в пути, и любые вторичные инструменты, такие как Ant или Maven, могут использовать JAVA_HOME
переменная.
Путь важен, потому что большинство общедоступных установок JRE помещают связанный исполняемый файл в c:\WINDOWS\System32\java.exe
, который обычно переопределяет большинство других настроек.
Я исправил поведение своего ярлыка запуска затмения в диалоге свойств
от
"E:\Program Files\eclipse\eclipse.exe"
в
"E:\Program Files\eclipse\eclipse.exe" -vm "E:\Program Files\Java\jdk1.6.0_30\bin"
как описано в документации по Eclipse
Это только патч, так как это зависит от ярлыка, чтобы исправить вещи...
Альтернативой является постоянная установка параметра в файле инициализации eclipse.
У меня только что была эта проблема (Java 1.8 против Java 9 на Windows 7), и мои выводы:
укороченная версия
по умолчанию, кажется (из-за ввода пути)
c:\ProgramData\Oracle\Java\javapath\java -version
выберите нужную версию (тестирование, используйте завершение табуляции в cmd, не уверен, что обозначают эти цифры), у меня было 2 варианта, подробности см. в более длинной версии.
c:\ProgramData\Oracle\Java\javapath_target_[tab]
удалите соединение / ссылку и ссылку на вашу версию (та, которая заканчивается на 181743567 в моем случае для Java 8)
rmdir javapath
mklink /D javapath javapath_target_181743567
более длинная версия:
Переустановите Java 1.8 после того, как Java 9 не сработала. Последовательность установки была jdk1.8.0_74, jdk-9.0.4 и попытка установить Java 8 по умолчанию с jdk1.8.0_162...
После установки jdk1.8.0_162 у меня все еще есть
java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
То, что я вижу в пути
Path=...;C:\ProgramData\Oracle\Java\javapath;...
Поэтому я проверил, что это такое, и обнаружил, что это перекресток (ссылка)
c:\ProgramData\Oracle\Java>dir
Volume in drive C is OSDisk
Volume Serial Number is DA2F-C2CC
Directory of c:\ProgramData\Oracle\Java
2018-02-07 17:06 <DIR> .
2018-02-07 17:06 <DIR> ..
2018-02-08 17:08 <DIR> .oracle_jre_usage
2017-08-22 11:04 <DIR> installcache
2018-02-08 17:08 <DIR> installcache_x64
2018-02-07 17:06 <JUNCTION> javapath [C:\ProgramData\Oracle\Java\javapath_target_185258831]
2018-02-07 17:06 <DIR> javapath_target_181743567
2018-02-07 17:06 <DIR> javapath_target_185258831
Эти хеши не звонят в колокол, но когда я проверил
c:\ProgramData\Oracle\Java\javapath_target_181743567>.\java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
c:\ProgramData\Oracle\Java\javapath_target_185258831>.\java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
поэтому, чтобы сделать Java 8 по умолчанию снова, мне пришлось удалить ссылку, как описано здесь
rmdir javapath
и воссоздать с Java я хотел
mklink /D javapath javapath_target_181743567
испытания:
c:\ProgramData\Oracle\Java>java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
** обновление (Java 10) **
С Java 10 это похоже, только javapath находится в c:\Program Files (x86)\Common Files\Oracle\Java\, что странно, так как я установил 64-битный IMHO
.\java -version
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
После многих попыток я нашел подход к перекрестку более удобным. Это очень похоже на то, как эта проблема решается в Linux.
В основном это состоит из наличия связи между c:\tools\java\default
и фактическая версия Java, которую вы хотите использовать по умолчанию в вашей системе.
Как установить это:
- Скачайте junction и убедитесь, что вы поместили его в переменную окружения PATH
- Настройте свою среду следующим образом:
PATH
указывая только на этот JREc:\tools\java\default\bin
-JAVA_HOME
указывая на `c:\tools\java\default - Храните все ваши jre-файлы в одной папке, например (если вы сделаете это в папке Program Files, вы можете столкнуться с некоторыми
C:\tools\Java\JRE_1.6
C:\tools\Java\JRE_1.7
C:\tools\Java\JRE_1.8
- Откройте командную строку и перейдите к
C:\tools\Java\
- казнить
junction default JRE_1.6
Это создаст соединение (которое более или менее похоже на символическую ссылку в Linux) между C:\tools\java\default
а также C:\tools\java\JRE_1.6
Таким образом, вы всегда будете иметь Java по умолчанию в c:\tools\java\default
,
Если вам нужно изменить Java по умолчанию на версию 1.8, вам просто нужно выполнить
junction -d default
junction default JRE_1.8
Тогда вы можете иметь пакетные файлы, чтобы сделать это без командной строки, как set_jdk8.bat
set_jdk7.bat
По предложению @СӏаџԁеМаятіи
РЕДАКТИРОВАТЬ: из Windows Vista, вы можете использовать mklink /J default JRE_1.8
Необходимо удалить C:\Program Files (x86)\Common Files\Oracle\Java\javapath из среды и заменить на JAVA_HOME, который отлично подходит для меня
Я просто устанавливаю все версии JDK, которые мне нужны, и последняя установленная версия становится версией по умолчанию, поэтому я просто переустанавливаю ту, которую я хочу использовать по умолчанию, если это необходимо.
У меня установлено несколько JDK (1.4, 1.5, 1.6) в C:\Java
со своими JRE. Затем я позволил Sun обновить публичную JRE в C:\Program Files\Java
,
В последнее время происходит улучшение, установка в jre6. Раньше в новой версии была другая папка (1.5.0_4, 1.5.0_5 и т. Д.), Которая занимала много места
Сложена эта проблема и решена в 2020 году в Windows 10. Я использую Java 8 RE и 14.1 JDK, и он работал хорошо до обновления Eclipse до версии 2020-09. После этого я не могу запускать Eclipse, потому что ему нужно было использовать Java 11 или новее, и он нашел только 8 версию. Это было из-за порядка переменных окружения " Пути ":
Я полагаю
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
- это путь для ссылки на установленные файлы JRE exe (в моем случае Java 8), и проблема была решена путем перехода по этой ссылке после
%JAVA_HOME%
, что приводит к папке Java 14.1/bin.
Кажется, что порядок переменных среды влияет на порядок просматриваемых папок при запросе исполняемого файла. Спасибо за ваш комментарий или лучшее объяснение.
Альтернативный способ запустить приложение.jar - создать для него.bat cmd. например, на вашем компьютере установлены jre10 и jre8, а jre10 - это jre по умолчанию. но ваш jar указан для работы с jre8, будет работать следующий cmd:
"C:\Program Files\Java\jre1.8.0_181\bin\java.exe" -jar JabRef-4.3.1.jar