Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ant编译javac时发出警告_Java_Ant_Compilation_Compiler Warnings - Fatal编程技术网

ant编译javac时发出警告

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

我有一个用于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-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配置它