Как установить среду установки / выполнения Java по умолчанию (Windows)?

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

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

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

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


person Stephen    schedule 15.02.2009    source источник
comment
Любопытный; У меня только что есть значок "Знаменитый вопрос" за этот вопрос, а за него всего 5 голосов? Это потому, что: а) это нехороший вопрос; Б) люди случайно находят его, когда ищут что-то другое; C) Это действительно популярно среди интернета в целом (не SO-пользователей); или D) (как всегда) что-то еще   -  person Stephen    schedule 23.02.2012


Ответы (9)


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

person nbeyer    schedule 15.02.2009
comment
Ключевым моментом было поместить желаемый java / bin в качестве первого элемента в системный путь. - person Stephen; 16.02.2009
comment
У меня был установлен java_home и новая корзина в пути, не сработало, мне пришлось снова установить последнюю версию jre7, и это позаботилось об этом - person Kalpesh Soni; 24.04.2013
comment
Очень хороший и подробный ответ, но отсутствует новая передовая практика, которую java представляет в отношении переключения местоположения пути. см. stackoverflow .com / questions / 27996603. - person ; 12.01.2016
comment
@ user257319 мне не кажется, поскольку новая передовая практика java вводит, по крайней мере, нет ссылки, это, скажем так, официальная практика ... - person Betlista; 08.02.2018
comment
Забавно, что вы не можете просто установить это в панели управления Java ... вы можете установить там много вещей, половину я даже не понимаю, но не это. - person ddekany; 22.03.2018

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

от

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

to

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

как описано person Jörn Guy Süß    schedule 16.01.2012


У меня только что была эта проблема (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)
person Betlista    schedule 08.02.2018

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

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


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

  1. Загрузите junction и обязательно поместите его в переменную среды PATH.
  2. Настройте среду следующим образом: - PATH указывает на ТОЛЬКО этот jre c:\tools\java\default\bin - JAVA_HOME указывает на `c: \ tools \ java \ default
  3. Store all your jre-s in one folder like (if you do that in your Program FIles folder you may encounter some
    • 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

person snovelli    schedule 21.12.2015
comment
Это то, чем я занимаюсь. Но теперь это mklink /J вместо junction для более новой версии Windows. Вы можете просто использовать rmdir, чтобы безопасно удалить соединение (это не повлияет на связанную папку). - person Claude Martin; 24.03.2016

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

person John Mikic    schedule 25.01.2018
comment
Это печально, что мне нужно переустановить, скажем, Java 1.8, когда я установил Java 9 для тестирования ... Как я обнаружил позже, даже переустановка не сработала для меня, проверьте мой ответ - person Betlista; 08.02.2018

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

person PhiLho    schedule 15.02.2009
comment
Вы можете добавить подробную информацию о том, как разрешить Sun обновлять общедоступную JRE ... Ваш ответ сам по себе не очень полезен. - person John Tobler; 25.01.2012
comment
Когда вы устанавливаете JDK в Windows, используя их программу .exe, в середине установки он спрашивает, можно ли установить JRE. Это то, что я имел в виду, говоря, что Sun [теперь Oracle ...] обновит общедоступную JRE. Я всегда меняю расположение JDK по умолчанию (на путь без пробелов, куда я помещаю все свои программы Java), но всегда сохраняю путь установки JRE по умолчанию. - person PhiLho; 27.01.2012
comment
Ваше дополнительное объяснение полезно и добавляет ценности, @PhiLho. Спасибо! - person John Tobler; 02.02.2012

изменяемый способ запуска приложения .jar - создать для него команду .bat. Например, на вашем компьютере установлены jre10 и jre8, а jre10 - это jre по умолчанию. но ваша jar указана для работы с jre8, будет работать следующий cmd:

"C:\Program Files\Java\jre1.8.0_181\bin\java.exe" -jar JabRef-4.3.1.jar
person ndtc    schedule 12.10.2018

Необходимо удалить C: \ Program Files (x86) \ Common Files \ Oracle \ Java \ javapath из среды и заменить на JAVA_HOME, который отлично подходит для меня

person Subedi    schedule 18.09.2020

Сложена по этой проблеме и решена в 2020 в Windows 10. Я использую Java 8 RE и 14.1 JDK, и он работал хорошо, пока Eclipse не обновился до версии 2020-09 . После этого я не могу запустить Eclipse, потому что ему нужно было использовать Java 11 или новее, и он нашел только версию 8. Это произошло из-за порядка переменных среды Path:

настройка переменных среды

Я предполагаю, что C:\Program Files (x86)\Common Files\Oracle\Java\javapath - это путь для ссылки на установленные файлы JRE exe (в моем случае Java 8), и проблема была решена путем перемещения вниз по этой ссылке после %JAVA_HOME%, что приводит к Java 14.1 / bin < / em> папка.

Настройка EV после редактирования

Кажется, что порядок переменных среды влияет на порядок просматриваемых папок при запросе исполняемого файла. Спасибо за ваш комментарий или лучшее объяснение.

person Karel Kosek    schedule 26.10.2020