Как изменить JRE по умолчанию для всех рабочих пространств Eclipse?

У меня есть одна JRE в C:\Program Files (x86)\Java\jre6, и это была единственная на момент установки Eclipse. Впоследствии я установил полный JDK в C:\home\SFTWR\jdk1.6.0_21 и изменил переменную среды JAVA_HOME на нее. Однако каждый раз, когда я запускаю новую рабочую область Eclipse, она загружает только старую JRE, и мне приходится вручную удалять ее и добавлять новую.

Как привязать установку Eclipse к новому JDK, чтобы каждая новая рабочая область указывала только на нее? Я проверил eclipse.ini, но там не было ссылки на какую JRE перейти.

ОБНОВЛЕНИЕ:

Я вошел в Prefs->Java->Installed JREs, добавил новое местоположение, пометил его как значение по умолчанию, удалил другое, и это было эффективно только для текущей рабочей области. Однако, когда я открыл новую рабочую область, была доступна только старая JRE. Таким образом, это не изменило основную конфигурацию Eclipse, которая применима ко всем (по крайней мере, новым) рабочим областям.


person amphibient    schedule 26.02.2013    source источник


Ответы (11)


Наконец понял: Способ, которым Eclipse подбирает JRE, использует системный PATH.

Раньше у меня вообще не было C:\home\SFTWR\jdk1.6.0_21\bin в пути, а было C:\Program Files (x86)\Java\jre6\bin. У меня и JRE_HOME, и JAVA_HOME были установлены на C:\home\SFTWR\jdk1.6.0_21, но ни один из этих двух не имел значения. Я предполагаю, что Eclipse сделал (что-то вроде) где java (или какой в UNIX/Linux), чтобы увидеть, где находится Java на пути, и взял JRE, к которой это java.exe принадлежал. В моем случае, несмотря на все изменения конфигурации, которые я сделал (включая параметр eclipse.ini -vm, как было предложено выше), он оставался привязанным к тому, что было на пути.

Я удалил старую корзину JRE из пути, вставил новую, и она работает для всех рабочих областей.

person amphibient    schedule 27.02.2013
comment
Не забудьте забрать свою Sock Puppet — хотя вы можете быть трудным. ;-) - person Ed Staub; 23.12.2013
comment
Интересно, сможет ли команда eclipse когда-нибудь сделать eclipse даже удаленно удобным для пользователя. FFS.... это буквально вчера работало нормально, а сегодня без предупреждения просто решил, что я не потратил достаточно рабочего дня на обслуживание eclipse. Спасибо за это ... избавил меня от необходимости переустанавливать Java в сотый раз, чтобы успокоить затмение. В следующий раз я просто принесу в жертву ягненка или что-то в этом роде. - person Mark W; 21.08.2015
comment
The way Eclipse picks up the JRE is using the system's PATH неправильно. У меня нет ни единого упоминания о Java в моем PATH, но Eclipse все равно по какой-то причине выбирает Java 11, игнорируя только Java 8, добавленную в настройки установленных JRE в настройках. - person Suncatcher; 03.10.2019

Установленные JRE используются для того, какие JRE выполнять для ваших нижестоящих проектов Java и серверов. Что касается того, какая JVM или JRE используется для выполнения самого процесса Eclipse (workbench), который контролируется вашей средой, историей и двоичным файлом eclipse.exe. Таким образом, eclipse.exe сам решает, с какой JRE Eclipse будет выполнять себя, а не с установленными настройками JRE, поскольку они не считываются до тех пор, пока не будет запущена и запущена структура OSGi, которая загружается после выбора JVM/JRE.

Таким образом, для новых рабочих областей Eclipse собирается использовать выполняющуюся в данный момент JRE для заполнения префов JRE.

Лучший способ, который я знаю, это заставить eclipse.exe использовать JRE, которую вы указываете через переключатель -vm. Итак, в вашем eclipse.ini сделайте следующее:

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-vm
/path/to/exactly/what/jre/you/want/as/default/javaw.exe
...
person gamerson    schedule 27.02.2013
comment
это не сработало. Я добавил -vm C:\home\SFTWR\jdk1.6.0_21\bin\javaw.exe - person amphibient; 28.02.2013
comment
Вы поместили -vm в отдельную строку в качестве пути? это должно выглядеть как -vm C:/home/... - person gamerson; 28.02.2013
comment
у меня это сработало, просто добавил --vm C:\Program Files\Java\jdk1.8.0_131\jre\bin\javaw.exe в файле конфигурации eclipse - person Laxminarayana Challagonda; 24.05.2017
comment
Это устранило мою проблему: в eclipse.ini старая версия java была жестко закодирована с помощью -vm . Как только я удалил строку -vm \path\to\non-existent\java, она без проблем подобрала новую версию. - person harry courtice; 15.06.2019

Откройте страницу настроек Java > Установленные JRE. Установите флажок в строке для JRE, которую вы хотите назначить в качестве JRE по умолчанию в вашем рабочем месте. Если JRE, которую вы хотите назначить по умолчанию, не отображается в списке, вы должны добавить ее. Нажмите «ОК».

Источник-http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-assign_default_jre.htm

person seeker    schedule 26.02.2013
comment
это тоже не сработало. Я вошел в Prefs->Java->Installed JREs, добавил новое местоположение, отметил его как значение по умолчанию, удалил другое, и это было эффективно только для текущей рабочей области. когда я открывал новое рабочее пространство, была доступна только старая JRE - person amphibient; 27.02.2013
comment
да, я создал совершенно новое рабочее пространство, изменил JRE, закрыл его. затем открыл еще одно новое рабочее пространство, надеясь, что предыдущее изменение JRE вступит в силу, но этого не произошло, поскольку у меня была только старая JRE - person amphibient; 27.02.2013
comment
it was effective only for the current workspace более того, для меня это не было эффективным даже для этого рабочего пространства. У меня есть только одна JRE, указанная в настройках, но Eclipse все равно использует другую - person Suncatcher; 03.10.2019

В затмение перейти к

Window-> Java -> Установленные JRE

Вы можете удалить текущую установленную jre и добавить jdk, указав путь к месту установки jdk.

введите описание изображения здесь

person Eduardo Dennis    schedule 19.08.2015

Я столкнулся с аналогичной проблемой, когда eclipse не использовал мою текущую %JAVA_HOME%, которая была на path, а вместо этого использовал более старую версию. В документации указано, что если в ini-файле не указано -vm, eclipse будет искать разделяемую библиотеку jvm.dll. Она появляется в реестре под ключом HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment, который устанавливается при использовании установщика Windows Java (ключ может немного отличаться в зависимости от 64-бит против 32-бит, но ищите jvm.dll). Поскольку он находил эту общую библиотеку на моем path до %JAVA_HOME%/bin, он использовал старую версию.

Как заявляли другие, самый простой способ справиться с этим — указать конкретную виртуальную машину, которую вы хотите использовать, в файле eclipse.ini. Я пишу это, потому что не мог понять, как он все еще использует старую версию, когда она нигде не указана в файле path или eclipse.ini.

См. ссылку на документ ниже: http://help.eclipse.org/kepler/topic/org.eclipse.platform.doc.isv/reference/misc/launcher.html?cp=2%JAVA_HOME%3_1

Поиск виртуальной машины и использование JNI Invocation API

Средство запуска Eclipse может загружать виртуальную машину Java в процессе eclipse с помощью API вызова собственного интерфейса Java. Средство запуска по-прежнему может запускать виртуальную машину Java в отдельном процессе, как это делала предыдущая версия Eclipse. Какой метод используется, зависит от того, как была найдена виртуальная машина.

-vm не указан

Если параметр -vm не указан, программа запуска сначала ищет виртуальную машину в каталоге jre в корневом каталоге eclipse, а затем по пути поиска. Если java находится в любом из этих мест, программа запуска ищет общую библиотеку jvm (jvm.dll в Windows, libjvm.so на платформах *nix) относительно этого исполняемого файла java.

  • Если общая библиотека jvm найдена, средство запуска загружает ее и использует API вызова JNI для запуска vm.
  • Если общая библиотека jvm не найдена, средство запуска запускает средство запуска java, чтобы запустить виртуальную машину в новом процессе.

-vm, указанный в командной строке или в eclipse.ini

Eclipse можно запустить с помощью «-vm», чтобы указать используемую виртуальную машину. Существует несколько вариантов значения :

  • directory: is a directory. We look in that directory for:
    • (1) a java launcher or
    • (2) разделяемая библиотека jvm.

Если мы находим разделяемую библиотеку jvm, мы используем вызов JNI. Если мы находим программу запуска, мы пытаемся найти библиотеку jvm в известных местах относительно программы запуска. Если мы находим его, мы используем вызов JNI. Если библиотека jvm не найдена, мы запускаем java в новом процессе.

  • java.exe/javaw.exe: — это путь к программе запуска Java. Мы выполняем эту программу запуска Java, чтобы запустить виртуальную машину в новом процессе.

  • jvm dll или около того: — это путь к общей библиотеке jvm. Мы пытаемся загрузить эту библиотеку и использовать JNI Invocation API для запуска виртуальной машины в текущем процессе.

person randal4    schedule 25.11.2015

Мой ответ будет пересекаться с ответом амфибии, добавляя к нему.

Ваша переменная JAVA_HOME в порядке, но вам также необходимо добавить следующее к вашей переменной Path:

;%JAVA_HOME%\bin

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

Если вы хотите проверить, правильно ли установлены переменные среды, вы можете открыть командную строку и ввести >echo %JAVA_HOME и >echo %Path%, чтобы убедиться, что эти переменные работают правильно. В поисках решений я также столкнулся с людьми, утверждающими, что им нужно добавить кавычки (") вокруг переменных среды, чтобы заставить их работать правильно ("%JAVA_HOME%"\bin), если ваш путь JAVA_HOME содержит пробелы. Я думал, что это был мой случай в сначала, но после полного перезапуска мои переменные, казалось, работали правильно без кавычек, несмотря на пробелы.

person Marchear    schedule 12.02.2014

когда вы выбираете конфигурацию запуска, рядом с основным касанием есть касание JRE, выберите «JRE по умолчанию для рабочей области (JDK1.7)».

Обязательно используйте jdk в Prefs->Java->Installed JREs ->Execution Environment

person MRTC    schedule 27.02.2016

Я столкнулся с той же проблемой. Решение: - Окно -> Настройки -> Java -> Установленные JRE -> Добавить... - Щелкните правой кнопкой мыши проект -> Путь сборки -> Настроить путь сборки -> Добавить библиотеку -> Системная библиотека JRE --> далее --> WorkSpace JRE по умолчанию

person tuyetngo    schedule 11.11.2014

попробуйте изменить порядок: щелкните правой кнопкой мыши проект-> BuildPath-> Настроить...-> вкладку «Заказ и экспорт» -> переместить jre7 ВВЕРХ.

person KARTASHOV    schedule 02.09.2013

В окнах я пробовал разные подходы - установка JAVA_HOME, JRE_HOME и расширение PATH, чтобы указать на желаемый jre18, но ничего не помогло - отключение JRE17 в панели управления java тоже не помогло

Что мне помогло, так это заставить eclipse использовать соответствующую JRE в файле eclipse.ini, например.

-vm C:\java\jdk1.8.0_111\jre\bin\javaw.exe

person Stefan Michev    schedule 11.08.2018

Я перешел к:

Eclipse>Pref>Java>Installed JRE>Search...

2 из них выскочили, и я проверил последний. Прежде чем я это сделал, я также зашел на About>Check for Updates и обновил его. Мне также не пришлось переустанавливать JRE или JDK. Я мог бы сделать это некоторое время назад, но это было с 1.6, а не с 1.4. Надеюсь, это поможет!

person Rafay    schedule 16.04.2014