Ant使用的是错误的java版本

68 java ant

我正在使用Ant 1.7.0并安装了JAVA_HOME中的java 1.6.

我想用java 1.5构建一个项目,所以我将JAVA_HOME导出为我的java 1.5目录.

java -version
Run Code Online (Sandbox Code Playgroud)

说"1.5".当我运行Ant时,它使用java 1.6.

Lee*_*ski 71

刚出现这个问题,发生这种情况是因为当默认JRE为1.6时,我首先将构建文件添加到ant-view.

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

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

  • 我刚刚意识到这个问题根本没有提到Eclipse.我的答案是针对使用Eclipse时描述的问题. (5认同)
  • 感谢您结束几个小时的挫折. (2认同)

bra*_*000 29

在Eclipse中:

  • 右键单击build.xml

  • 单击"运行方式",单击"外部工具配置..."

  • 选择标签JRE.选择您正在使用的JRE.

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


Mic*_*rdt 19

根据ant手册,设置JAVA_HOME应该有效 - 你确定更改的设置对于ant是可见的吗?

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

  • 我有自己的问题atm和JAVA_HOME指向正确的JDK,但是蚂蚁仍然报告错误的java版本. (2认同)

Rob*_*anu 15

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


sim*_*n_d 15

您可以使用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}">
Run Code Online (Sandbox Code Playgroud)

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


小智 10

如果您使用的是Eclipse IDE,则可以通过以下步骤实现:

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

  2. 将鼠标悬停在"运行方式"上,单击"外部工具配置...".

  3. 在"参数"中添加以下内容:

    -Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5
    
    Run Code Online (Sandbox Code Playgroud)


小智 6

构建文件:

<target name="print-version"> 
   <echo>Java/JVM version: ${ant.java.version}</echo> 
   <echo>Java/JVM detail version: ${java.version}</echo> 
</target>
Run Code Online (Sandbox Code Playgroud)

输出:

[echo] Java/JVM version: 1.5
[echo] Java/JVM detail version: 1.5.0_08
Run Code Online (Sandbox Code Playgroud)


Bil*_*lly 5

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


fla*_*ama 5

这是一个很老的问题,但我会添加我的笔记以供将来参考.

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

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

$> export PATH='$PATH:'$JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

如果我的变量PATH中已经有一个java,那么最后一个值将毫无意义,因此顺序很重要.为了解决这个问题,我开始通过首先添加变量,然后添加PATH来反转它.

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

这可能只是巧合,但它对我有用.