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

pet*_*ust 65 ant javac

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

<target name="compile">
  <javac compiler="javac1.5" target="1.5" srcdir=.../>
</target>
Run Code Online (Sandbox Code Playgroud)

我也删除了

<property name="build.compiler" value="modern"/>
Run Code Online (Sandbox Code Playgroud)

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

还有一种简单的方法可以确定jar文件中预期的Java版本.

Naw*_*Man 88

使用"target"属性并删除"compiler"属性.看到这里.所以它应该是这样的:

<target name="compile">
  <javac target="1.5" srcdir=.../>
</target>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • 我也必须使用source和bootclasspath属性.有关交叉编译示例,请参阅[此处](http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#examples).(与蚂蚁属性直接对应) (7认同)
  • 如果可以修改答案以添加`source`和`bootclasspath`,那将是非常好的 (5认同)

use*_*062 44

应指定源和目标.我建议提供ant默认值,这样您就不需要为每个javac任务指定source/target属性:

<property name="ant.build.javac.source" value="1.5"/>
<property name="ant.build.javac.target" value="1.5"/>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Java交叉编译说明.


pet*_*ust 15

要在我使用的类文件中找到java的版本:

javap -verbose <classname>
Run Code Online (Sandbox Code Playgroud)

它在开始时宣布版本为

minor version: 0
major version: 49
Run Code Online (Sandbox Code Playgroud)

它对应于Java 1.5


Eug*_*nko 5

您还可以设置{{ant.build.javac.target=1.5}}ant属性以更新任务的默认目标版本.请参见http://ant.apache.org/manual/javacprops.html#target