我使用的是 Ant 1.7.0并安装了 JAVA _ HOME 中的 JAVA 1.6。
我想用 JAVA 1.5构建一个项目,所以我将 JAVA _ HOME 导出为 JAVA 1.5目录。
java -version
当我运行 Ant 时,它使用的是 java 1.6。
根据 蚂蚁手册,设置 JAVA _ HOME 应该可以工作-你确定改变的设置是可见的蚂蚁?
或者,您可以使用 JAVACMD 变量。
在详细模式下运行 ant: ant -v并寻找线索。
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" />
<property name="classes" value="c:/classes" />
如果您正在使用 Eclipse IDE,您可以通过以下步骤来实现这一点:
右键单击您的 ant 构建文件(build.xml)中的任务。
build.xml
鼠标在“运行方式”,点击“外部工具配置...”。
在“论点”中添加以下内容:
-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标签使用以下两个属性:
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路径。
JAVACMD
java.exe
默认情况下,Ant 将 JRE 视为工作区 JRE 版本。您需要按照以下步骤根据您所需的版本进行更改。
右键单击 build.xml 单击“ Run As”,单击“ Foreign Tool” 选择 tab JRE。
选择您正在使用的 JRE。
使用所需的 java 版本(在你的例子中是 java 1.5)来设置你的 JAVA_HOME环境变量,然后在 build.xml中在 <javac></javac>标签中使用 executable="${JAVA_HOME}/bin/javac"。
JAVA_HOME
<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 等) ,以便新的环境变量生效。
C:\Program Files\Java\jdk1.8.0_211\bin\java.exe
\java.exe
如果您的构建文件还没有它(有些已经有了,例如 Apache Tomcat) ,您可以向 build.xml添加一个 echoproperties目标,例如。
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