我需要使用ANT(1.7.0)编译一个JAR文件,以运行一个特定版本的Java(1.5)。我的机器上现在有1.6个Java。我试过设置:
<target name="compile">
<javac compiler="javac1.5" target="1.5" srcdir=.../>
</target>
我也把
<property name="build.compiler" value="modern"/>
也没有属性文件。我正在运行Linux/suse的Java1.6
还有一个简单的方法来确定JAR文件中预期的Java版本。
使用"目标"属性并删除"编译器"属性。看 在这里 .所以应该是这样的:
<target name="compile">
<javac target="1.5" srcdir=.../>
</target>
应指定源和目标。我建议提供 Ant默认值 ,这样,您就不需要为每个JavAC任务指定源/目标属性:
<property name="ant.build.javac.source" value="1.5"/>
<property name="ant.build.javac.target" value="1.5"/>
看 Java交叉编译说明 获取更多信息。
为了在我使用的类文件中找到Java的版本:
javap -verbose <classname>
一开始就宣布了这个版本
minor version: 0
major version: 49
相当于java1.5
你也可以{{ant.build.javac.target=1.5}}
更新任务的默认目标版本.看 网站/手册/Javacp.html#目标
我也不得不使用源和类路径属性。看 在这里 用于交叉编译示例。(与蚂蚁的属性直接对应)
如果能修改一下答案source 和bootclasspath
它可以帮助使用遗留应用程序。