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,那么可以通过以下步骤来实现这一点:
-
右键单击您的ant构build文件(
build.xml
)中的任务。 -
将鼠标移到“运行方式”上,点击“外部工具configuration…”。
-
将以下内容添加到“参数”中:
-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。