Как установить стандартную установку 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, которую вы хотите использовать по умолчанию в вашей системе.


Как установить это:

  1. Скачайте junction и убедитесь, что вы поместили его в переменную окружения PATH
  2. Настройте свою среду следующим образом: PATH указывая только на этот JRE c:\tools\java\default\bin - JAVA_HOME указывая на `c:\tools\java\default
  3. Храните все ваши jre-файлы в одной папке, например (если вы сделаете это в папке Program Files, вы можете столкнуться с некоторыми
    • C:\tools\Java\JRE_1.6
    • C:\tools\Java\JRE_1.7
    • C:\tools\Java\JRE_1.8
  4. Откройте командную строку и перейдите к C:\tools\Java\
  5. казнить 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.batset_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
Другие вопросы по тегам