Issue
I am making an automated build environment using ant to build a freshly checked out source tree using the same eclipse compiler that is used in eclipse. The problem is that some of the resulting class files are different in size than the class file generated by compiling within eclipse. Why is this? Is this ok, and to be expected? As prescribed I'm telling Ant to use the eclipse compiler, like:
<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>
Solution
Eclipse uses its own compiler, which generates slightly different - but correct - bytecode.
Ant uses the standard Sun compiler - javac - available in the JDK.
The eclipse compiler can be downloaded from eclipse.org and ant told to use it. This has the added benefit of being able to compile with the JRE alone, which is much easier to install than the full JDK. Look for "JDT Core Batch Compiler" in http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/index.php
EDIT: Even with the same compiler the byte code generated may be different. Some factors that influence on this are:
- Target JVM - Java 6 byte codes are slightly different than Java 1.2 byte codes.
- Optimization level (some inlining, better left to the JVM these days)
- Debug information inclusion.
Answered By - Thorbjørn Ravn Andersen
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.