我正在使用ant创建一个自动构建环境,使用Eclipse中使用的相同Eclipse编译器来构建一个新 checkout 的源代码树。问题是,一些生成的类文件的大小与在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>
字符串
2条答案
按热度按时间8e2ybdfx1#
Eclipse使用自己的编译器,它生成的字节码略有不同,但正确无误。
Ant使用JDK中提供的标准Sun编译器javac。
eclipse编译器可以从eclipse.org下载,ant可以使用它。这有一个额外的好处,即可以单独使用JRE进行编译,这比完整的JDK更容易安装。在http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/index.php中查找“JDT Core批处理器”
编辑:即使使用相同的编译器,生成的字节码也可能不同。影响这一点的一些因素是:
kwvwclae2#
大小上的差异是因为ANT的javac默认将调试模式设置为false。
转折
debug=“true”
在ANT脚本javac中,
1.在cmd中生成与maven或普通javac生成的类文件相同的类文件。
1.因为诸如行号和标签节点之类的调试细节也将被添加到字节码中。