2010-09-02 12 views
5

Estoy creando un entorno de compilación automatizado usando Ant para construir un árbol fuente recién extraído utilizando el mismo compilador de eclipse que se usa en Eclipse. El problema es que algunos de los archivos de clase resultantes son de diferente tamaño que el archivo de clase generado compilando dentro de eclipse. ¿Por qué es esto? ¿Está bien y es de esperar? Tal y como establece estoy diciendo Ant para utilizar el compilador de Eclipse, como:¿Por qué los archivos de clase tienen un tamaño diferente al compilar el mismo código en eclipse y luego con el compilador de eclipse a través de ant?

<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> 

Respuesta

5

Eclipse utiliza su propio compilador, lo que genera un poco diferente - pero es correcto - el código de bytes.

Ant utiliza el compilador Sun estándar - javac - disponible en el JDK.

El compilador de eclipse se puede descargar de eclipse.org y se le dice que lo use. Esto tiene la ventaja adicional de poder compilar solo con el JRE, que es mucho más fácil de instalar que el JDK completo. Busque "Compilador de lotes JDT Core" en http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/index.php


EDIT: Incluso con el mismo compilador genera el código de bytes puede ser diferente. Algunos factores que influyen en esto son:

  • Target JVM - Java Los códigos de 6 bytes son ligeramente diferentes de los códigos de Java 1.2 bytes.
  • Nivel de optimización (algunos en línea, mejor dejarlo a la JVM en estos días)
  • Incluir información de depuración.
+2

"usando el mismo compilador eclipse que se utiliza en Eclipse" (aunque creo que ha de ser las opciones del compilador no son lo mismo) – Cascabel

+0

La interfaz de línea de comandos para TJE intencionadamente imita las de javac. –

+1

Buena explicación, aunque siempre sacaría el JDK completo de todos modos, no más difícil solo lleva un poco más de tiempo. –

Cuestiones relacionadas