我正在使用Ant 1.7.0并安装了JAVA_HOME中的java 1.6。
我想使用Java 1.5构建项目,因此我已经将JAVA_HOME导出为我的Java 1.5目录。
java -version
说“ 1.5”。当我运行Ant时,它使用的是Java 1.6。
我正在使用Ant 1.7.0并安装了JAVA_HOME中的java 1.6。
我想使用Java 1.5构建项目,因此我已经将JAVA_HOME导出为我的Java 1.5目录。
java -version
说“ 1.5”。当我运行Ant时,它使用的是Java 1.6。
Answers:
刚遇到这个问题,是因为我在默认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。记住此设置以供后续运行。
根据ant手册,设置JAVA_HOME应该可以工作-您确定更改后的设置对ant可见吗?
或者,您可以使用JAVACMD变量。
您可以使用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" />
在详细模式下运行antant -v
并寻找线索。
ant -v
我发现ant正确使用了jdk1.7,但是由于我以前的尝试,该构建省略了临时文件夹上的所有类,因为它们已经存在。因此,我要做的就是删除临时文件夹,然后重新创建它们,这一次使用了我想要的jdk 1.7。可能会帮助某人
您还可以在javac任务中指定要使用的兼容性级别(1.4、1.5、1.6),可以设置“源”和“目标”级别值,请在此处查看文档: Javac任务文档
-bootclasspath
在编译时还添加该选项。
这是一个比较老的问题,但是我将添加我的注释以供将来参考。
我遇到了类似的问题,并通过更改PATH变量中导出的顺序来解决此问题。
例如,我正在使用一种通过将字符串连接到PATH的方法(这只是一个示例):
$> export PATH='$PATH:'$JAVA_HOME
如果我的变量PATH中已包含Java,则最后一个值将无意义,因此顺序很重要。为了解决这个问题,我首先通过添加变量,然后添加PATH来对其进行反转。
按照这个想法,我颠倒了ANT_HOME导出的顺序。在ANT_HOME之前添加JAVA_HOME。
这可能只是一个巧合,但对我有用。
如果您不使用eclipse。然后,您可以按此处所述直接在文件上更改ant java属性。
http://pissedoff-techie.blogspot.in/2014/09/ant-picks-up-incorrect-java-version.html
如果从eclipse运行Ant,则eclipse将使用在class-path(构建路径)中配置的jdk或jre。
<echo message="Ant java version: ${ant.java.version}" />
JAVA_HOME
使用所需的Java版本(在您的情况下为Java 1.5)设置环境变量,然后在内部build.xml
使用executable="${JAVA_HOME}/bin/javac"
<javac></javac>
标签。
例:
<target name="java compiler" description="Compiles the java code">
<javac executable="${JAVA_HOME}/bin/javac" srcdir="./src"
destdir="${build.dir}/classes">
</javac>
</target>