在Ant的javac中设置Java目标版本

73

我需要使用ant(1.7.0)编译一个jar文件以在特定版本的Java(1.5)下运行。 我的机器上当前安装了Java 1.6。 我尝试过设置:

<target name="compile">
  <javac compiler="javac1.5" target="1.5" srcdir=.../>
</target>
我也已经移除了。
<property name="build.compiler" value="modern"/>

并且没有属性文件。 我正在运行Linux / SUSE上的Java 1.6

此外,有没有简单的方法确定jar文件需要哪个版本的Java。

4个回答

92

使用“target”属性并删除“compiler”属性。请参见此处。因此,它应该像这样进行:

<target name="compile">
  <javac target="1.5" srcdir=.../>
</target>

8
我也需要使用source和bootclasspath属性。请参阅此处的跨编译示例,了解更多信息(与ant属性直接对应)。 - kon psych
6
如果能够修改答案并添加“source”和“bootclasspath”,那就太好了。 - Jason S
它对于遗留应用程序有所帮助。 - Breton F.
<javac target="15" - Oleksii Kyslytsyn

50

应该指定源和目标。我建议提供ant defaults,这样您就不需要为每个javac任务指定源/目标属性:

<property name="ant.build.javac.source" value="1.5"/>
<property name="ant.build.javac.target" value="1.5"/>

查看Java交叉编译注意事项获取更多信息。


<property name="ant.build.javac.source" value="15"/> <property name="ant.build.javac.target" value="15"/> - Oleksii Kyslytsyn

15

要查找class文件中的Java版本,我使用了:

javap -verbose <classname>

开始时宣布版本:

minor version: 0
major version: 49

对应于Java 1.5版本


5

{{ant.build.javac.target=15}} - Oleksii Kyslytsyn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接