簡體   English   中英

當目標設置為1.5時,Ant嘗試編譯為1.6

[英]Ant try to compile to 1.6 when target is set to 1.5

我很長時間以來一直在努力解決javac ant任務問題。 問題在於,顯然螞蟻忽略了設置為1.5的target屬性:

    <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>

目標和源設置為1.5。 當我運行任務時,出現編譯錯誤:

foo.Bar is not abstract and does not override abstract method createStruct(java.lang.String,java.lang.Object[]) in java.sql.Connection

根據java docs( link )方法,createStruct是在Java 1.6中引入的,因此我知道ant會編譯為1.6,而不是我禮貌地要求他編譯為1.5。

我從Eclipse和命令行運行任務,結果相同,所以這不是Eclipse問題。 我試圖在ANT中更改JRE,並使用不同的ANT版本,但沒有任何幫助。

我已經嘗試了所有可以在網上找到的內容,但現在我放棄了。 有人可以幫我嗎? 好的,請..

指定源兼容性僅控制語言語法,而不控制Java運行時庫。

由於您沒有告訴Ant在哪里可以找到Java 1.5 Runtime Library,因此它使用的是與調用Ant相同的庫。

要修復,請同時指定bootclasspathref="compile.bootclasspath"屬性。

compile.bootclasspath的定義如下:

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

顯而易見, java15.home是什么。 ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM