Как Eclipse компилирует классы только с помощью JRE?

Мне нужно собрать компиляцию со специальной JRE, которая была «настроена».

Eclipse может скомпилировать классы с помощью этой JRE, но мне нужно создать скрипт сборки вне Eclipse.

Какой метод используется Eclipse для создания файлов .class без JDK?


person glmxndr    schedule 29.10.2009    source источник


Ответы (4)


Eclipse поставляется с собственным компилятором по следующим причинам:

  • Инкрементная компиляция (может компилировать только измененные части проекта, что может означать больше, чем количество файлов, которые вы только что сохранили, например, когда вы изменили некоторые глобальные)
  • Компилятор Eclipse может создать файл класса, даже если код содержит ошибки. Это позволяет запустить проект, даже если не все компилируется.
  • Компилятор предоставляет Eclipse AST, поэтому он может делать всевозможные причудливые вещи (например, план, показать вам все места, где используется переменная под курсором и т. д.) без дополнительных затрат (т. е. не нужно запускать компилятор и другой анализатор).
person Aaron Digulla    schedule 29.10.2009
comment
Есть даже документация о том, как запустить компилятор Eclipse как отдельное приложение вне Eclipse: help.eclipse.org/galileo/topic/org.eclipse.jdt.doc.isv/guide/ - person Joachim Sauer; 29.10.2009
comment
Принято благодаря комментарию Иоахима. Я нашел ту же ссылку, которая дает полное описание того, как использовать класс BatchCompiler. - person glmxndr; 29.10.2009
comment
Спасибо за хорошее объяснение. Где вы нашли эту информацию? Мне очень трудно найти информацию о возможностях компилятора Eclipse. - person Sanghyun Lee; 11.08.2012
comment
По всей сети. Я читаю Затмение планеты, Форумы Eclipse и исходный код. - person Aaron Digulla; 13.08.2012
comment
@AaronDigulla Итак, почему это заставляет выбирать установленные JRE в настройках? - person Can Mingir; 25.04.2014
comment
JDK (Java SE Development Kit) всегда включает JRE (Java Runtime Environment), поэтому вы можете указать Eclipse на оба варианта. Для самого Eclipse JDT (Java Developer Tools) это не имеет значения. Однако для некоторых инструментов, таких как m2e, требуется полный JDK. Только такие плагины заставляют вас использовать JDK. Если вы ими не пользуетесь, вас никто ни к чему не принуждает :-) - person Aaron Digulla; 27.04.2014
comment
@AaronDigulla, так вы говорите, что у Eclipse есть и JRE? Или вы говорите, что Eclipse выполняет только компиляцию, но нам все еще нужно установить JRE в нашей системе для тестирования кода? - person Pacerier; 25.08.2014
comment
@Pacerier: Чтобы запустить код Java (независимо от того, как), вам как минимум нужна JRE. Таким образом, для запуска самого Eclipse или кода, который вы пишете внутри Eclipse, вам понадобится как минимум JRE (JDK также подойдет). Если вы используете подключаемый модуль m2e, вам потребуется JDK для запуска Eclipse. Чтобы скомпилировать код вне Eclipse, вам понадобится JDK. Для компиляции кода внутри Eclipse вам не нужен JDK. Если вы используете подключаемый модуль m2e, вам потребуется JDK для запуска Eclipse и для таких задач, как установка mvn, поскольку для подключаемого модуля компилятора Maven требуется компилятор Java, а по умолчанию используется компилятор из JDK. - person Aaron Digulla; 26.08.2014
comment
@AaronDigulla, нет, я имел в виду, есть ли у Eclipse собственная JRE? Например. У меня есть JRE версии 6, которую я использую для запуска Eclipse. Могу ли я использовать встроенную JRE Eclipse для запуска кода, предназначенного для JRE версии 7? - person Pacerier; 26.08.2014
comment
@Pacerier: Eclipse не поставляется с JRE. - person Aaron Digulla; 26.08.2014
comment
@AaronDigulla, спасибо, что поделились своими знаниями. Это хорошее чтение. - person Jagadish Talluri; 19.11.2015

Я считаю, что Eclipse поставляется с внутренними компиляторами, и вы можете выбрать совместимость с Java от 1.3 до 1.6 (проверьте меню «Настройки» в разделе «Java-> Compiler»). Таким образом, Eclipse не нуждается во внешнем JDK для компиляции, потому что он самодостаточен.

Если вы хотите создать скрипт сборки вне Eclipse, вам понадобится внешний компилятор, например, тот, который поставляется с настоящим JDK.

person Yuval    schedule 29.10.2009

Для интересного случая: компилятор Eclipse является частью ядра JDT.

person BalusC    schedule 01.11.2009

Eclipse изначально был создан IBM. Eclipse имеет собственный встроенный компилятор Java, основанный на компиляторе Java от IBM, Jikes.

person Jesper    schedule 29.10.2009
comment
Я не думаю, что компилятор Eclipse основан на Jikes. Он вполне может быть вдохновлен им, но поскольку jikes реализован на C++, а компилятор Eclipse — это чистая Java, я сомневаюсь, что они унаследовали какие-либо основные части кода. - person Joachim Sauer; 29.10.2009
comment
Хорошо, если это так, то компилятор Eclipse не совсем Jikes. По крайней мере, они оба произошли от IBM. - person Jesper; 29.10.2009