Ant 使用了错误的 java 版本

我使用的是 Ant 1.7.0并安装了 JAVA _ HOME 中的 JAVA 1.6。

我想用 JAVA 1.5构建一个项目,所以我将 JAVA _ HOME 导出为 JAVA 1.5目录。

java -version

当我运行 Ant 时,它使用的是 java 1.6。

180330 次浏览

根据 蚂蚁手册,设置 JAVA _ HOME 应该可以工作-你确定改变的设置是可见的蚂蚁?

或者,您可以使用 JAVACMD 变量。

在详细模式下运行 ant: ant -v并寻找线索。

你也可以在 javac 任务中指定你想要使用的兼容级别(1.4,1.5,1.6) ,你可以设置“源”和“目标”级别的值,点击这里查看文档: Javac 任务文档

您可以使用 javac 标记上的 target 和 source 属性来设置目标运行时。下面的示例将在任何支持1.4或更高版本的编译器上将任何源代码编译到目标版本1.4。

<javac compiler="classic" taskname="javac" includeAntRuntime="no" fork=" deprecation="true" target="1.4" source="1.4" srcdir="${src}" destdir="${classes}">

注意: “ srcdir”和“ destdir”是在构建脚本中的其他位置设置的属性值, 例如 <property name="classes" value="c:/classes" />

如果您正在使用 Eclipse IDE,您可以通过以下步骤来实现这一点:

  1. 右键单击您的 ant 构建文件(build.xml)中的任务。

  2. 鼠标在“运行方式”,点击“外部工具配置...”。

  3. 在“论点”中添加以下内容:

    -Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5
    

这个问题之所以会发生,是因为我在默认 JRE 为1.6时首次将构建文件添加到 ant 视图。

没有特定于项目的 JRE,我将默认设置更改为1.5,甚至 Eclipse 在1.5中运行,JAVA _ HOME 也是1.5。从命令行运行 ant 目标使用了 JRE 1.5,但是在 eclipse 中它仍然使用了1.6。

我必须右键单击 ant 目标,选择 Run As... 并在 JRE 选项卡下更改 JRE。此设置将在后续运行时记住。

如果在 eclipse 中运行 Ant,Eclipse 将使用在 class-path (构建路径)中配置的 jdk 或 jre。

这是一个相当老的问题,但我会添加我的笔记,以备将来参考。

我有一个类似的问题,并通过更改 PATH 变量中导出的顺序来修复它。

例如,我使用了一种方法,通过以下方法将字符串连接到 PATH (这只是一个例子) :

$> export PATH='$PATH:'$JAVA_HOME

如果我的变量 PATH 中已经有一个 java,那么最后一个值将是没有意义的,因此顺序很重要。为了解决这个问题,我首先添加变量,然后添加 PATH,开始进行反转。

按照这个想法,我反转了 ANT _ HOME 导出的顺序。

这可能只是个巧合,但对我很有效。

在 Eclipse 中:

  • 右键单击 build.xml

  • 点击“运行方式”,点击 “外部工具配置...”

  • 选择选项卡 JRE。选择您正在使用的 JRE。

重新运行任务,现在应该没问题了。

如果您不使用 Eclipse。然后您可以直接在这里提到的文件上更改 antjava 属性。

Http://pissedoff-techie.blogspot.in/2014/09/ant-picks-up-incorrect-java-version.html

javac标签使用以下两个属性:

fork="yes"
executable="full-path-to-the-javac-you-want-to-use".

可以在 给你中找到对这些属性的解释

构建文件:

<target name="print-version">
<echo>Java/JVM version: ${ant.java.version}</echo>
<echo>Java/JVM detail version: ${java.version}</echo>
</target>

产出:

[echo] Java/JVM version: 1.5
[echo] Java/JVM detail version: 1.5.0_08

根据 Ant 文档 ,设置 JAVACMD环境变量以完成您想要运行 Ant 的 JRE 版本的 java.exe路径。

默认情况下,Ant 将 JRE 视为工作区 JRE 版本。您需要按照以下步骤根据您所需的版本进行更改。

在 Eclipse 中:

  • 右键单击 build.xml 单击“ Run As”,单击“ Foreign Tool” 选择 tab JRE。

  • 选择您正在使用的 JRE。

  • 重新运行任务,现在应该没问题了。

使用所需的 java 版本(在你的例子中是 java 1.5)来设置你的 JAVA_HOME环境变量,然后在 build.xml中在 <javac></javac>标签中使用 executable="${JAVA_HOME}/bin/javac"

例如:

<target name="java compiler" description="Compiles the java code">
<javac executable="${JAVA_HOME}/bin/javac" srcdir="./src"
destdir="${build.dir}/classes">
</javac>
</target>

Abc0是一个专门针对 Ant 的环境变量,Ant doc 说:

JAVACMD ー JAVA 可执行文件的完整路径。使用它调用与 JAVA _ HOME/bin/JAVA (. exe)不同的 JVM。

因此,如果您的 java.exe完整路径是: C:\Program Files\Java\jdk1.8.0_211\bin\java.exe,创建一个新的环境变量称为 JAVACMD,并将其值设置为上述路径(包括 \java.exe)。请注意,您需要关闭和重新打开您的终端(cmd,Powershell 等) ,以便新的环境变量生效。

如果您的构建文件还没有它(有些已经有了,例如 Apache Tomcat) ,您可以向 build.xml添加一个 echoproperties目标,例如。

<target name="echoproperties">
<echoproperties/>
</target>

然后你可以运行蚂蚁任务 echoproperties,查找“ Java.version”或者 ant -v,查找“ Java version”,例如在我的机器上

ant echoproperties | grep java.version

表演

[ echo properties ] java.version = 11.0.9.1

还有

ant -v | grep -i "java version"

表演

检测到 Java 版本: 11 in:/opt/Java/zulu11.43.55-ca-jdk11.0.9.1-linux _ x64