看起来这应该是一个简单的任务,在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。
任何想法为什么?
答案 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构建器使用自己的编译器(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