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

use*_*270 34 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)
Run Code Online (Sandbox Code Playgroud)

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

有什么想法吗?

Edw*_*uck 54

从菜单栏:Project - > Properties - > Java Compiler

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

这将允许您使用"1.6"JDK编译"1.5"代码.

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

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

然后回到你的项目

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

删除1.6系统库,并:添加库... - > JRE System LIbrary - > Alternate JRE - >你想要的JRE.

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

  • 该系统JAVA_HOME与内部Eclipse环境无关.JavaSE-1.6支持编译为Java 1.5.这就是为什么它与Java 5目标的完美匹配.您不需要安装Java 1.5来编译可在1.5 JVM上运行的代码.如果只想使用Java 5 JDK进行编译,请通过删除当前使用的JDK并包含要使用的1.5 JDK的系统库来更改项目构建路径.如果您不能包含1.5 JDK库,那么您可能没有配置JDK,而是在"已安装的JRE和执行环境"中配置JRE (2认同)

Kev*_*ann 5

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

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

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

对于 Eclipse Mars.1 Release (4.5.1),这可以针对 1.3 到 1.8(含)。

配置项目时:

[project-name] > Properties > Java Compiler > Compiler compliance level
Run Code Online (Sandbox Code Playgroud)

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

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

不使用 Oracle/Sun JDK 编译器。


Pop*_*ops 3

首先,您设置的是所需的 JRE 还是 JDK?

即使您的 Eclipse 设置正确,某处也可能存在奇怪的项目特定设置。您可以在 Project Explorer 中打开给定 Java 项目的上下文菜单,然后选择 Properties > Java Compiler 进行检查。

如果这些都没有帮助,请发表评论,我会再看看。