Как установить стандартную установку Java / время выполнения (Windows)? - PullRequest
44 голосов
/ 16 февраля 2009

Я нахожусь в ситуации, когда я установил JDK, но я не могу запустить апплеты в браузерах (возможно, я не установил JRE).

Однако, когда я устанавливаю JRE, он забивает мой JDK в качестве среды выполнения по умолчанию. Это нарушает практически все (Eclipse, Ant) - так как им требуется серверная JVM.

В наши дни нет переменной окружения JAVA_HOME - кажется, она использует магию реестра (установка системного пути также бесполезна). Ранее я только что удалил JRE после того, как использовал его для восстановления JDK. На этот раз я хочу исправить это правильно.

Это также проявляется в jre autoupdater - когда-то у меня была рабочая установка с JDK и JRE, но она обновилась и все перевернула.

Ответы [ 7 ]

40 голосов
/ 16 февраля 2009

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

6 голосов
/ 16 января 2012

Я исправил поведение моего ярлыка запуска затмения в диалоге свойств

от

"E:\Program Files\eclipse\eclipse.exe"

до

"E:\Program Files\eclipse\eclipse.exe" -vm "E:\Program Files\Java\jdk1.6.0_30\bin"

как описано в документации Eclipse

Это только патч, так как это зависит от ярлыка, чтобы исправить вещи ...

Альтернативой является постоянная установка параметра в файле инициализации затмения.

2 голосов
/ 08 февраля 2018

У меня только что была эта проблема (Java 1.8 против Java 9 в Windows 7), и мои выводы:

короткая версия

По умолчанию, кажется (из-за ввода пути)

c:\ProgramData\Oracle\Java\javapath\java -version

выберите нужную версию (тестирование, используйте завершение табуляции в cmd, не уверен, что означают эти цифры), у меня было 2 варианта, подробности см. В более длинной версии

c:\ProgramData\Oracle\Java\javapath_target_[tab]

удалить соединение / ссылку и ссылку на вашу версию (в моем случае для Java 8 она заканчивается на 181743567)

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)
1 голос
/ 25 января 2018

Я просто устанавливаю все версии JDK, которые мне нужны, и последняя установленная версия становится версией по умолчанию, поэтому я просто переустанавливаю ту, которую я хочу использовать по умолчанию, если необходимо.

0 голосов
/ 12 октября 2018

альтернативный способ запустить приложение .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
0 голосов
/ 21 декабря 2015

После многих попыток я нашел подход к переходу более удобным. Это очень похоже на то, как эта проблема решается в Linux.

По сути, он состоит из ссылки между c:\tools\java\default и фактической версии Java, которую вы хотите использовать по умолчанию в вашей системе.


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

  1. Загрузите junction и убедитесь, что поместили его в свой путь переменная окружения
  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.bat set_jdk7.bat

По предложению @ С @аӏеМаятіи

РЕДАКТИРОВАТЬ: Из Windows Vista, вы можете использовать mklink /J default JRE_1.8

0 голосов
/ 16 февраля 2009

У меня есть несколько 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 и т. Д.), Которая занимала много места

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...