2012-11-01 103 views
1

可能重复:
Override the compiler attribute in an Ant javac task蚂蚁build.compiler使用

在蚂蚁,究竟什么时候使用build.compiler选项,或the <javac> taskcompiler属性?

我试着设置compiler="javac1.5",但是当我在十六进制编辑器打开生成的类文件,类版本仍显示为32十六进制(版本1.6)—直到我设置JAVA_HOME指向我的JDK 1.5的安装。 (在此之前,它一直指向我的JDK 1.6安装。)所以看起来好像JAVA_HOME取代compiler属性—在这种情况下,该属性的用途是什么?

sourcetarget属性似乎正常工作;当我指定target版本时,生成的类文件确实具有正确的版本。

回答

4

该属性的目的是能够选择类似gcjjikes而不是标准的JDK编译器。 javac1.5(和javac1.6等)仅仅是modern的别名,标准编译器,并且被简单地定义,以支持规则的build.compiler默认值是javac1.xx匹配运行JDK(所以默认是modern在1.3和更高的和在1.2和以下的classic)。

如果要编译将在1.5上运行的类,则需要使用source="1.5" target="1.5"并将引导类路径设置为指向1.5类库,以确保不会调用在1.6或更高版本中引入的方法。