为什么在eclipse中编译相同的代码时,类文件的大小不同,然后通过ant使用eclipse编译器?

smdnsysy  于 12个月前  发布在  Eclipse
关注(0)|答案(2)|浏览(201)

我正在使用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>

字符串

8e2ybdfx

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批处理器”
编辑:即使使用相同的编译器,生成的字节码也可能不同。影响这一点的一些因素是:

  • 目标JVM - Java 6字节代码与Java 1.2字节代码略有不同。
  • 优化级别(一些内联,现在最好留给JVM)
  • 信息包容性。
kwvwclae

kwvwclae2#

大小上的差异是因为ANT的javac默认将调试模式设置为false。
转折
debug=“true”
在ANT脚本javac中,
1.在cmd中生成与maven或普通javac生成的类文件相同的类文件。
1.因为诸如行号和标签节点之类的调试细节也将被添加到字节码中。

相关问题