如何让eclipse使用不同的Java编译器版本?

时间:2010-03-29 19:07:47

标签: java eclipse

看起来这应该是一个简单的任务,在Preferences菜单中为不同的JRE提供选项,并且能够为每个项目设置不同的编译器和构建路径。但是,它似乎根本行不通。

例如,我将JAVA_HOME设置为Java 1.6的jre。我仍然不清楚Eclipse如何使用它,但它似乎是默认的,并没有采取项目覆盖。我还安装了Java 1.5,并在Java-> Installed JREs部分的eclipse中为此添加了一个JRE。

在我的项目中,我将编译器合规性级别设置为1.5。在项目的构建路径中,我添加了Java 1.5 JRE的系统库。但是,我正在为实现PreparedStatement的类获取编译错误,因为它没有实现仅存在于Java 1.6 PreparedStatement中的抽象方法。具体来说,方法

setAsciiStream(int, InputStream, long) and 
setAsciiStream(int, InputStream)

奇怪的是,当我们针对最初为其编写的Java 1.4编译它时,它起作用了。我们为Java 1.4添加了JRE并在项目中引用了该系统库,并将项目的编译器级别设置为1.4,并且它工作正常。但是,当我做同样的更改以尝试指向Java 1.5时,它改为使用1.6。

任何想法为什么?

4 个答案:

答案 0 :(得分:51)

从菜单栏中: 项目 - >属性 - > Java编译器

启用项目特定设置(已选中) 取消选中“使用执行环境中的合规性”.... 选择所需的“编译器合规级别”

这将允许您使用“1.6”JDK编译“1.5”代码。

如果你想实际使用1.5 JDK生成“1.5”兼容代码,那么安装一个合适的1.5 JDK并告诉eclipse安装它的位置:

窗口 - >偏好 - >已安装的JRE

然后回到你的项目

项目 - >属性 - > Java构建路径 - >库

删除1.6系统库,并: 添加库... - > JRE系统图书馆 - >替代JRE - >你想要的JRE。

验证项目的构建路径上是否有正确的JRE,保存所有内容并享受!

答案 1 :(得分:4)

Eclipse使用它自己的内部编译器,可以编译成几个Java版本。

来自Eclipse帮助> 概念> Java Builder

  

Java构建器使用自己的编译器(Eclipse Compiler for Java)构建Java程序,该编译器实现了Java语言规范。

对于Eclipse Mars.1版本(4.5.1),这可以达到1.3到1.8的目标。

配置项目时:

[project-name] > Properties > Java Compiler > Compiler compliance level

这会将Eclipse Java编译器配置为将代码编译为指定的Java版本,通常为1.8。

不使用主机环境变量,例如JAVA_HOME等。

未使用Oracle / Sun JDK编译器。

答案 2 :(得分:3)

首先,您是否设置了所需的JRE或所需的JDK?

即使你的Eclipse设置正确,某个地方可能还有一个古怪的项目特定设置。您可以在Project Explorer中打开给定Java项目的上下文菜单,然后选择Properties> Java编译器检查它。

如果没有任何帮助,请发表评论,我会再看看。

答案 3 :(得分:1)

为了澄清,您是否将JAVA_HOME设置为系统变量或在Eclipse类路径变量中设置?我很确定(但不完全确定!)系统变量由命令行编译器(和Ant)使用,但是Eclipse将此修改修改为使用的JDK