ant编译javac时发出警告
我有一个用于Java应用程序的ant构建。我被迫使我的应用程序与Java 1.6兼容 运行ant脚本时,会收到以下警告:ant编译javac时发出警告,java,ant,compilation,compiler-warnings,Java,Ant,Compilation,Compiler Warnings,我有一个用于Java应用程序的ant构建。我被迫使我的应用程序与Java 1.6兼容 运行ant脚本时,会收到以下警告: [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6 你能解释一下这是什么意思吗?我该怎么做才能把它去掉?代码运行良好,但我将把它投入生产,我不想让这种警告悬而未决 我的build.xml文件如下所示: <path id="master-class
[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)版本1.8.2
Java版本:
JavaC1.7.0\u79
这意味着,尽管您使用的是-source
选项,但您仍然拥有JDK1.7库,因此javac无法保证您的代码在Java1.6上工作。Javac将检查您是否正在使用新的语法特性(如try with resources
operator),但它无法检查您是否正在使用新的API方法(如java.nio.file.Files
class)。因此,即使编译正确,它也可能无法工作
在我看来,最好的解决方案是使用JDK1.6编译。警告建议您提供指向已安装JRE 1.6的自定义引导类路径。因此,如果您有JRE 1.6,但不想在JDK 1.6上运行整个构建,那么您可以遵循此建议。这意味着,尽管您使用的是
-source
选项,但您仍然有JDK 1.7库,因此javac无法保证您的代码在Java1.6上工作。Javac将检查您是否正在使用新的语法特性(如try with resources
operator),但它无法检查您是否正在使用新的API方法(如java.nio.file.Files
class)。因此,即使编译正确,它也可能无法工作
在我看来,最好的解决方案是使用JDK1.6编译。警告建议您提供指向已安装JRE 1.6的自定义引导类路径。因此,如果您有JRE 1.6,但不想在JDK1.6上运行整个构建,那么您可以遵循此建议。它与javac相关。看 使用JDK N中的javac将编译器交叉到较旧的平台 版本,正确的做法是:
- 使用旧的源设置
- 设置bootclasspath以针对旧平台的rt.jar(或等效文件)进行编译
它与javac相关。看 使用JDK N中的javac将编译器交叉到较旧的平台 版本,正确的做法是:
- 使用旧的源设置
- 设置bootclasspath以针对旧平台的rt.jar(或等效文件)进行编译
这与您的源代码或构建应用程序所运行的ANT脚本无关
这一切都与蚂蚁本身是如何开始的有关。正如您所说,您正在使用Java1.7.079运行Ant,Java6和Java7之间的API和库发生了重大变化。为了避免这些差异并消除您看到的警告,您需要在Java 6环境中运行ANT。这与您的源代码或用于构建应用程序的ANT脚本无关
这一切都与蚂蚁本身是如何开始的有关。正如您所说,您正在使用Java1.7.079运行Ant,Java6和Java7之间的API和库发生了重大变化。为了避免这些差异并消除您看到的警告,您需要在Java 6环境中运行ANT。看看系统环境。可能是JAVA_HOME和JAVA可执行文件(例如JAVA_HOME=1.7,JAVA=1.8)不匹配吗?请看一下系统环境。可能是JAVA_HOME和JAVA可执行文件(例如JAVA_HOME=1.7,JAVA=1.8)不匹配吗?非常感谢。我对它的唯一评论是:当您在linux上安装了很少的jdk时,“java”命令指向何处确实很重要(ant任务显然忽略了javac),并且可以使用:update alternations--config javado谢了。我对它的唯一评论是:当您在linux上安装了很少的jdk时,“java”命令指向的位置确实很重要(ant任务显然忽略了javac),并且可以使用:updatealternations--config java配置它