ant正在使用错误的Java版本

我正在使用Ant 1.7.0并安装了Java 1.6的JAVA_HOME。

我想用java 1.5来构build一个项目,所以我导出了JAVA_HOME作为我的Java 1.5目录。

java -version 

说“1.5”。 当我运行Ant它使用Java 1.6。

刚刚发生这个问题,它发生是因为我默认的JRE是1.6时,首先将构build文件添加到了Ant视图中。

没有项目特定的JRE,我把默认值改为1.5,即使Eclipse运行在1.5,JAVA_HOME也是1.5。 从命令行运行ant目标使用JRE 1.5,但在Eclipse中仍然使用1.6。

我必须右键单击ant目标,select运行为…并更改JRE选项卡下的JRE。 这个设置被记住以便后续运行。

简单!

在Eclipse中:

  • 右键点击你的build.xml

  • 点击“Run As”,点击“External Tool Configurations …”

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

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

根据ant手册 ,设置JAVA_HOME应该工作 – 你确定改变的设置是可见的ant?

或者,您可以使用JAVACMDvariables。

您可以使用javac标记上的目标和源属性来设置目标运行时。 下面的例子将编译任何源代码,以在任何支持版本1.4或更高版本的编译器上将版本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'是在构build脚本中设置的属性值,例如<property name="classes" value="c:/classes" />

以详细模式运行ant: ant -v并查找线索。

如果您使用的是Eclipse IDE,那么可以通过以下步骤来实现这一点:

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

  2. 将鼠标移到“运行方式”上,点击“外部工具configuration…”。

  3. 将以下内容添加到“参数”中:

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

您还可以在javac任务中指定要使用的什么级别的兼容性(1.4,1.5,1.6),您可以设置“源”和“目标”级别的值,请查看文档: Javac任务文档

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

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

例如,我正在使用一种将string连接到我的PATH的方法(这只是一个例子):

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

如果我的variablesPATH已经有一个java的话,那么最后一个值就没有意义了,所以顺序是很重要的。 为了解决这个问题,我开始颠倒它,首先添加我的variables,然后添加PATH。

按照这个想法,我倒转了ANT_HOME被导出的顺序。 在ANT_HOME之前添加JAVA_HOME。

这可能只是一个巧合,但它为我工作。

构build文件:

 <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 

如果你不使用eclipse。 然后你可以直接在这个文件中改变ant的java属性。

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

如果从eclipse运行Ant,eclipse将使用在类path(构buildpath)中configuration的jdk或jre。

javac标记使用以下2个属性:

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

可以在这里find属性的解释

根据Ant文档 ,设置JAVACMD环境variables来完成你想运行Ant的JRE版本的java.exe的path。