我如何获得eclipse使用Java的不同编译器版本?

看起来这应该是一个简单的任务,在不同的JRE的Preferences菜单中有选项,并且能够为每个项目设置不同的编译器和构buildpath。 但是,这似乎也根本不起作用。

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

在我的项目中,我将编译器合规性级别设置为1.5。 在项目的构buildpath中,我添加了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。

任何想法为什么?

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

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

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

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

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

然后回到你的项目

项目 – >属性 – > Java Build Path – >库

删除1.6系统库,以及:添加库… – > JRE System LIbrary – > Alternate JRE – >所需的JRE。

validation正确的JRE是否在项目的构buildpath上,保存所有内容,然后享受!

首先,你是设置你想要的JRE还是你想要的JDK?

即使你的Eclipse设置正确,在某个地方可能会出现一个古怪的项目特定设置。 您可以在Project Explorer中的给定Java项目上打开一个上下文菜单,然后selectProperties> Java Compiler进行检查。

如果没有任何帮助,留下评论,我会再看看。

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

从Eclipse帮助> Java开发用户指南>概念> Java生成器

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

对于Eclipse Mars.1 Release(4.5.1),它可以指向1.3到1.8。

当你configuration一个项目时:

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

这将Eclipse Java编译器configuration为将代码编译为指定的Java版本,通常为今天的1.8版本。

主机环境variables,例如JAVA_HOME等不被使用。

不使用Oracle / Sun JDK编译器。

只是澄清,你有JAVA_HOME设置为一个系统variables或设置在Eclipse类pathvariables? 我非常肯定(但不是完全确定!)系统variables是由命令行编译器(和Ant)使用的,但是Eclipse修改了这个用于所使用的JDK的accroding

使用Maven设置JDK 1.8编译器的另一种方法是使用这个插件:

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <verbose>true</verbose> <fork>true</fork> <executable>C:\Program Files\Java\jdk1.8.0_102\bin\javac</executable> <source>1.8</source> <target>1.8</target> </configuration> </plugin>