3

可能重复:
覆盖 Ant javac 任务中的编译器属性

在 Ant 中,我究竟如何使用build.compiler选项或任务<javac>compiler属性?

我尝试了设置compiler="javac1.5",但是当我在十六进制编辑器中打开生成的类文件时,类版本仍然显示为32十六进制(版本 1.6)——直到我设置JAVA_HOME指向我的 JDK 1.5 安装。(在那之前,它一直指向我的 JDK 1.6 安装。)所以它似乎JAVA_HOME取代了该compiler属性——在这种情况下,该属性的目的是什么?

和属性似乎确实可以正常工作source。当我指定版本时,生成的类文件确实具有正确的版本。targettarget

4

1 回答 1

6

该属性的目的是能够选择类似gcjjikes代替标准 JDK 编译器的东西。 javac1.5javac1.6等等)只是modern标准编译器的别名,它的定义只是为了支持默认值与正在运行的 JDK 匹配的规则(build.compiler因此默认值为1.3 及更高版本以及1.2 及更低版本)。javac1.xxmodernclassic

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

于 2012-11-01T15:04:58.327 回答