Как изменить запускаемую JVM в среде Eclipse IDE?

Я запускаю Eclipse Oxygen (1A) на своем Mac, и в разделе «Сведения об установке» я вижу, что JVM, которая в настоящее время используется самой IDE (для фактического запуска JVM), является 1.8.0_131 JVM Oracle. У меня установлено несколько других JVM, включая последнюю версию 1.8.0_161, и я хотел бы перейти на последнюю.

Для ясности: я не пытаюсь установить среду выполнения, которая используется при компиляции и / или запуске кода для конкретного проекта. Я пытаюсь изменить JVM, которая используется при запуске самого Eclipse.

До сих пор я удостоверился, что Eclipse знает о моей обновленной JRE и что это действительно установленная JRE по умолчанию, но при перезапуске Eclipse используется та же старая JVM (1.8.0_131).

Есть ли способ сообщить Eclipse, что я хотел бы использовать обновленную JVM без непосредственного редактирования сценариев запуска Eclipse? (Я предполагаю, что мог бы сделать это, если бы захотел, но я бы предпочел этого не делать.)


person Christopher Schultz    schedule 19.01.2018    source источник
comment
stackoverflow.com/ questions / 557169 /   -  person Iłya Bursov    schedule 20.01.2018
comment
Это делается при редактировании eclipse.ini.   -  person greg-449    schedule 20.01.2018


Ответы (2)


В справочной документации мы узнаем (основные) подробности о том, как исполняемый файл программы запуска Eclipse ищет подходящие установки Java:

-vm (Исполняемый, Главный)

при передаче исполняемому файлу Eclipse эта опция используется для поиска виртуальной машины Java, которая будет использоваться для запуска Eclipse. Это должен быть полный путь к соответствующей файловой системе: каталог Java jre/bin, исполняемый файл Java, разделяемая библиотека Java (jvm.dll или libjvm.so) или файл описания Java VM Execution Environment.

Если не указано, исполняемый файл Eclipse использует алгоритм поиска для поиска подходящей виртуальной машины. В любом случае исполняемый файл затем передает путь к реальной виртуальной машине, используемой для Java Main, с помощью аргумента -vm. Затем Java Main сохраняет это значение в eclipse.vm.

К сожалению, результат этого алгоритма поиска явно не указан, что почему-то делает его немного недетерминированным. Еще более сложный: это может быть стратегия, зависящая от платформы.

ИЗМЕНИТЬ: в разделе Eclipse Launcher алгоритм объяснен лучше с более подробной информацией.

Если указано no -vm, средство запуска ищет виртуальную машину сначала в каталоге jre в корне eclipse , а затем по пути поиска.

Учитывая вышеупомянутый процесс поиска jvm и (связанные) последствия, вы можете (только) иметь стабильную среду, указав путь через -vm в eclipse.ini. Это должно указывать на стабильный путь, возвращенный командой /usr/libexec/java_home -v 1.8 *.

* Примечание: просто проверьте результат этой команды через Терминал локально.

В моей среде MacOS приведенная выше команда приводит к следующему:

/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home

Как вы можете видеть в следующем листинге, я создал символическую ссылку, которая указывает на актуальный и обновленный JDK, установленный в моей системе.

node:JavaVirtualMachines user$ ls -lah
total 0
drwxr-xr-x  6 root  wheel   192B 18 Jan 13:35 .
drwxr-xr-x  5 root  wheel   160B  6 Okt 14:28 ..
lrwxr-xr-x  1 root  wheel    17B 18 Jan 13:34 1.8.0.jdk -> jdk1.8.0_161.jdk/
lrwxr-xr-x  1 root  wheel    14B  3 Nov 10:42 1.9.0.jdk -> jdk-9.0.1.jdk/
drwxr-xr-x  3 root  wheel    96B  3 Nov 10:40 jdk-9.0.1.jdk
drwxr-xr-x  3 root  wheel    96B 18 Jan 13:32 jdk1.8.0_161.jdk

Продолжая изучать ваш вопрос, я сделал интересное наблюдение в моей локальной установке Eclipse Oxygen.2, которое также может быть применимо в вашем случае. На приведенном ниже снимке экрана мы видим, что имя JRE каким-то образом статично и не обновляется с новыми версиями.

Несоответствие имени JRE

Проверьте свою локальную ситуацию, нажав кнопку «Изменить ...» в списке «Установленная JRE». На самом деле это может указывать на обновленную версию JRE / JDK. В лучшем случае вам просто нужно изменить название этой записи.

Надеюсь, поможет.

person MWiesner    schedule 20.01.2018
comment
Как ни странно, мой eclipse.ini говорит -vm /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/bin, но все же работающий Eclipse говорит, что вместо этого работает jdk1.8.0_122. Кажется, я уже давно обошел это стороной, когда я привязал новую директорию установки JRE к старому имени. - person Christopher Schultz; 22.01.2018
comment
Я решил полностью удалить аргумент -vm (и параметр) из eclipse.ini (используя начальные знаки # в eclipse.ini), и перезапуск заставил Eclipse использовать последнюю доступную JRE. Я думаю, что сохраню эту конфигурацию, чтобы всегда получать последнюю версию. - person Christopher Schultz; 22.01.2018
comment
Мне кажется разумным. Однако имейте в виду, что вы можете столкнуться с «проблемой» версии (снова), если JDK8 и 9 будут установлены в вашей системе одновременно: среда решает, какой JDK вы будете использовать. Надеюсь, мой ответ помог прояснить ситуацию и укажет вам направление, т. Е. Предложит варианты, указанные в таблице. - person MWiesner; 22.01.2018

Вам нужно зайти в папку eclipse, открыть eclipse.ini и добавить эту строку:

-vm
C:/Program Files/Java/jdk1.7.0_7/bin/javaw.exe

Измените путь с вашим java-путем

person Albanninou    schedule 19.01.2018
comment
Обратите внимание, что OP ссылается на JVM в версии 1.8+. Как ваше предлагаемое решение может быть правильным, если оно относится к JDK в версии 1.7? Возможно, он даже не установлен на этой машине, так как он довольно устаревший ... - person MWiesner; 20.01.2018
comment
Кроме того, на моем Mac нет C: диска;) - person Christopher Schultz; 22.01.2018