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

2022-09-01 05:53:39

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

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

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

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

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

任何想法为什么?


答案 1

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

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

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

如果你想使用1.5 JDK来生成“1.5”兼容代码,那么安装一个合适的1.5 JDK,并通过以下方式告诉eclipse它的安装位置:

窗口 -> 首选项 ->已安装的 JRE

然后返回到您的项目

项目 -> 属性 -> Java 生成路径 -> 库

删除 1.6 系统库,并:添加库... -> JRE System LIbrary -> 备用 JRE -> 您想要的 JRE。

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


答案 2

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

来自 Eclipse 帮助 > Java 开发用户指南 >概念> Java Builder

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

对于Eclipse Mars.1版本(4.5.1),这可以针对1.3到1.8(包括1.3)。

配置项目时:

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

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

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

不使用 Oracle/Sun JDK 编译器。


推荐