2015-06-15 124 views
1

我的Java應用程序有一個ant build。我不得不讓我的應用程序兼容Java 1.6。通過ant進行javac編譯時發出警告

當我跑我的ant腳本,我得到以下警告:

[javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6 

你能解釋我這是什麼意思,我應該怎樣做,以去除呢?代碼工作正常,但我打算將它放入生產環境中,而且我不想讓這類警告無法解決。

我的build.xml文件看起來是這樣的:

<path id="master-classpath"> 
    <fileset dir="lib"> 
    <include name="*.jar"/> 
    </fileset> 
</path> 

<target name="compile" depends="clean"> 
    <javac srcdir="src" destdir="${bin-dir}" debug="on" source="1.6" includeantruntime="false"> 
      <classpath refid="master-classpath"/> 
    </javac> 
</target> 

<target name="clean"> 
    <mkdir dir="${bin-dir}"/> 
    <mkdir dir="${build-dir}"/> 

    <delete> 
     <fileset dir="${bin-dir}"/> 
     <fileset dir="${build-dir}"/> 
    </delete> 
</target> 

螞蟻版本:Ant(TM) version 1.8.2

Java版本:javac 1.7.0_79

+0

看看系統環境。它可能與JAVA_HOME和java可執行文件不匹配(例如,JAVA_HOME = 1.7,java = 1.8)? –

回答

2

這意味着,雖然使用的是-source選項,你仍然有JDK 1.7庫,因此,javac無法保證您的代碼可以在Java 1.6上運行。 Javac將檢查您是否沒有使用新的語法功能(如try-with-resources運算符),但它無法檢查您是否使用新的API方法(如java.nio.file.Files類)。所以即使它編譯正確,它可能無法正常工作。

我認爲最好的解決方案是用JDK 1.6進行編譯。什麼警告建議您提供指向安裝的JRE 1.6的自定義引導程序類路徑。所以如果你有JRE 1.6,你可以遵循這個建議,但不想在JDK 1.6上運行整個構建。

+0

非常感謝。我唯一的評論是:當你在linux上安裝了幾個jdk時,'java'命令指向的地方是很重要的(javac顯然被ant任務忽略),它可以使用下面的配置: update-alternatives --config java – gawi

1

這與您運行的源代碼或ANT腳本無關,可用於構建應用程序。

它與ANT本身如何啓動有關。正如您所說的,您正在使用Java 1.7.0_79運行Ant。Java 6和Java 7之間存在重要的API和庫更改。爲避免這些差異並消除您所看到的警告,您需要在Java 6環境中運行ANT。