2015-06-15 125 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。