我正在使用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。
刚遇到了这个问题,因为我最初将构建文件添加到ant视图时,默认JRE为1.6。
没有项目特定的JRE,并且我将默认值更改为1.5,即使eclipse在1.5中运行,JAVA_HOME也是1.5。 通过命令行运行ant目标使用的是JRE 1.5,但在eclipse中它仍然使用1.6。
我必须右键单击ant目标,选择“Run As...”并在JRE选项卡下更改JRE。 这个设置会记住后续运行的配置。
右键单击您的build.xml文件
单击“运行为”,再单击“外部工具配置…”
选择选项卡JRE。 选择您正在使用的JRE。
重新运行任务,现在应该没问题了。
在详细模式下运行 ant:ant -v
,并寻找线索。
ant -v
,我发现ant正在正确使用jdk1.7,但是构建由于之前的尝试已经在临时文件夹中省略了所有类。所以我所做的就是删除临时文件夹,它重新创建了它们,这次使用了我想要的jdk 1.7。这可能会帮助某些人。 - Mauro Banze您可以在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" />
如果您使用Eclipse IDE,可以通过以下步骤实现:
在您的ant构建文件(build.xml
)中,右键单击任务。
将鼠标悬停在“Run As”上,然后点击“External Tool Configurations...”。
将以下内容添加到“Arguments”中:
-Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5
构建文件:
<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
这是一个比较老的问题,但我会为将来的参考添加我的笔记。
我曾经遇到过类似的问题,并通过更改PATH变量中导出的顺序来解决它。
例如,我通过以下方式将字符串连接到我的PATH中(这只是一个示例):
$> export PATH='$PATH:'$JAVA_HOME
JAVACMD
是 Ant 特定的环境变量。Ant 文档中说:
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 等),以使新环境变量生效。