Почему файлы классов имеют разный размер при компиляции одного и того же кода в eclipse, а затем с помощью компилятора eclipse через ant? - PullRequest
5 голосов
/ 02 сентября 2010

Я создаю автоматизированную среду сборки, используя ant для создания только что проверенного дерева исходников, используя тот же компилятор eclipse, который используется в eclipse.Проблема заключается в том, что некоторые из полученных файлов классов отличаются по размеру от файла классов, сгенерированного компиляцией в eclipse.Почему это?Это нормально, и следовало ожидать?Как предписано, я говорю Ant использовать компилятор eclipse, например:

<target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
        <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
        <antcall target="build"/>
</target>

1 Ответ

5 голосов
/ 02 сентября 2010

Eclipse использует свой собственный компилятор, который генерирует немного другой - но правильный - байт-код.

Ant использует стандартный компилятор Sun - javac - доступный в JDK.

Компилятор eclipse может бытьскачал с eclipse.org, и муравей сказал использовать его.Это дает дополнительное преимущество, заключающееся в возможности компилирования только с использованием JRE, которое гораздо проще установить, чем полный JDK.Ищите «JDT Core Batch Compiler» в http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/index.php


РЕДАКТИРОВАТЬ: Даже с одним и тем же компилятором сгенерированный байт-код может отличаться.Вот некоторые факторы, которые влияют на это:

  • Целевая JVM - 6-байтовые коды Java немного отличаются от байтовых кодов Java 1.2.
  • Уровень оптимизации (некоторые встроенные, лучше оставить для JVMэти дни)
  • Включение отладочной информации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...