可能重复:
覆盖Ant javac任务中的编译器属性
在蚂蚁,究竟什么时候使用build.compiler
选项,或在<javac>
任务的compiler
属性?
我尝试过设置compiler="javac1.5"
,但是当我在十六进制编辑器中打开生成的类文件时,类版本仍然显示为32
十六进制(版本1.6) - 直到我设置JAVA_HOME
为指向我的JDK 1.5安装.(在那之前,它一直指向我的JDK 1.6安装.)所以它似乎JAVA_HOME
取代了compiler
属性 - 在这种情况下,该属性的目的是什么?
在source
和target
属性都似乎正常工作; 当我指定target
版本时,生成的类文件确实具有正确的版本.
该属性的目的是能够选择类似于gcj
或jikes
代替标准JDK编译器的东西. javac1.5
(和javac1.6
等)仅仅是用于一个别名modern
,标准编译器,并且被简单地定义,以支持规则的默认值build.compiler
是javac1.x
与x
匹配的运行JDK(所以默认是modern
上1.3和更高,classic
在1.2或以下).
如果要编译将在1.5上运行的类,则需要使用source="1.5" target="1.5"
并将bootstrap类路径设置为指向1.5类库,以确保不调用1.6或更高版本中引入的方法.