Ant使用旧版JDK,如何更改?

3

我在Ubuntu 12.04 64位系统上安装了Eclipse Indigo (3.7.2),并尝试使用Java 1.7编译项目。我认为我已经正确安装了Java 1.7,因为我可以运行Processing 2.0(使用Java 1.7),并获得正确的版本消息:

prokop@prokop-Precision-T1500:~$ java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

然而,当我在Eclipse中点击Ant的“播放”按钮时,会出现以下消息:
 Unsupported major.minor version 51.0

同时,在Ant构建输出窗口的标题"Console"中也有这样的信息:
[Ant Build] /usr/lib/jvm/java-6-openjdk/bin/java

我尝试修改eclipse的环境设置:

  • 项目 > 属性 > Java编译器为1.7
  • 窗口 > 首选项 > Java > 已安装的JREs为jdk1.7._60,我将其下载到我的主目录下 /home/prokop/SW/jdk1.7.0_60

但这并没有帮助 - 显然Ant仍在使用java-6-openjdk

  • 是否有其他设置可以让Ant使用jdk1.7?
  • 在Ubuntu 12.04 64位上,是否有可能强制使Eclipse Indigo(3.7.2)使用Java 1.7进行编译?

"ant -diagnostic" 的结果是什么? - Jayan
4个回答

3
当您通过Eclipse运行ant时,就会出现此问题。您可以使用Eclipse中的“外部工具配置”设置JDK。请参见附件。

External tools configuration in eclipse


2

嗨,我刚刚这样做了,我从选择中选择了/usr/lib/jvm/jdk1.7.0/bin/java,但是使用ant仍然得到相同的输出。 - Prokop Hapala
你好,我更新了我的回答。你已经通过显示java -version输出确认你正在使用Java 7作为你的主要JDK。 - Kasper Ziemianek
我的JAVA_HOME变量没有设置,我将其设置为/usr/lib/jvm/jdk1.7.0/bin/java,并根据此链接http://www.cyberciti.biz/faq/linux-unix-set-java_home-path-variable/将`/usr/lib/jvm/jdk1.7.0/bin/`添加到PATH中,但这并没有起作用。只有Indika的建议设置Eclipse外部工具配置JRE才解决了问题。 - Prokop Hapala

1

另一种设置方式是在您的build.xml中使用:

<project name="xyz" default="all">
<property name="ant.build.javac.target" value="1.7" />
...

这个全局参数 (ant.build.javac.target) 指定了项目目标与JDK 7兼容。

0
javac 任务中,尝试通过设置可执行属性来指定 Java 编译器,如下所示:
<property name="JDK1.7.dir" location="/usr/lib/jvm/java-7" />
<property name="javac1.7" location="${JDK1.7.dir}/bin/javac" />

<target name="compile-tests">
  <javac executable="${javac1.7}" 
      fork="yes"
      includeantruntime="false" 
      srcdir="${test.dir}"
      destdir="${build.dir}" >
    <classpath refid="class.path" />
  </javac>
</target>

什么是javac任务?抱歉,我是eclipse的新手,我正在尝试为处理编译库模板。我将您的代码放在处理库模板(https://github.com/processing/processing-library-template/blob/master/resources/build.xml)的开头,我试图编译它。问题仍然存在。 - Prokop Hapala
javac任务是用于编译基于Java的程序/文件的任务。 - VikramV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接