当目标设置为1.5时,Ant尝试编译为1.6

时间:2016-09-27 16:29:16

标签: java ant javac

我正在努力解决javac ant任务问题很长一段时间了。问题在于显然ant忽略了目标属性,该属性设置为1.5:

Failed to load resource: the server responded with a status of 404 (Not Found). http://127.0.0.1:9000/images/image.svg

目标和来源设置为1.5。 当我运行任务时,我有编译错误:

    <target name="compile" description="Kompilacja zrodel" depends="init">
    <javac target="${compile.targetvm}" source="${compile.sourcecompatibility}" debug="${compile.debug}" optimize="${compile.optimize}" verbose="${compile.verbose}" srcdir="${source.dir}" destdir="${build.classes.dir}" encoding="${compile.source.encoding}" includeantruntime="false">
        <classpath refid="compile.classpath" />
    </javac>
</target>

根据java docs(link)方法,java 1.6中引入了createStruct,所以我知道ant正在编译为1.6而不是1.5,因为我礼貌地要求他这样做。

我从eclipse和命令行运行任务的结果相同,所以这不是日食问题。我试图改变ANT中的JRE并使用不同的ANT版本并没有任何帮助。

我已经尝试过我能在网上找到的所有东西,现在我放弃了。有人能帮助我吗?非常好..

1 个答案:

答案 0 :(得分:0)

指定源兼容性仅控制语言语法,而不是Java运行时库。

由于您还没有告诉Ant在哪里可以找到Java 1.5运行时库,因此它使用的是用于调用Ant的相同库。

要修复,请同时指定bootclasspathref="compile.bootclasspath"属性。

compile.bootclasspath的定义如下:

<path id="compile.bootclasspath">
    <fileset dir="${java15.home}/jre/lib" includes="*.jar"/>
</path>

显然java15.home是什么。 ; - )