在ant的javac编译期间发出警告

时间:2015-06-15 12:51:30

标签: java ant compilation compiler-warnings

我的Java应用程序有一个ant构建。我被迫使我的应用程序与Java 1.6兼容。

当我运行我的蚂蚁脚本时,我收到以下警告:

[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版本:Ant(TM) version 1.8.2

Java版:javac 1.7.0_79

3 个答案:

答案 0 :(得分: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上运行整个构建。

答案 1 :(得分:1)

与javac有关。见https://blogs.oracle.com/darcy/entry/bootclasspath_older_source

  

使用JDK N中的javac交叉编译到旧平台   版本,正确的做法是:

     
      
  • 使用较旧的-source设置。
  •   
  • 将bootclasspath设置为针对旧平台的rt.jar(或等效项)进行编译。
  •   

答案 2 :(得分:1)

这与您为构建应用程序而运行的源代码或ANT脚本无关。

它与ANT本身的启动方式有关。正如您所说,您正在使用Java 1.7.0_79运行Ant。在Java 6和Java 7之间存在重要的API和库更改。为了避免这些差异并消除警告,您会发现需要在Java 6环境中运行ANT。 / p>