为什么 Eclipse 不将编译器切换到 Java 8?

2022-09-01 07:32:06

我在Eclipse中从SVN中检查了一个Java项目,并意识到它需要Java 8,因为它使用lambda等。我为Java 8安装了Eclipse插件并重新启动了Eclipse,并按如下方式设置了项目:

New Java Project

我注意到在底部附近,它说默认编译器合规性为1.7,所以我进入并将编译器合规性变量设置为,根据这个答案。但是,在 Project -> Preferences -> Java 编译器中,它仍然显示为:org.eclipse.jdt.core.prefs1.8

Eclipse please

我已经在Project -> Java Build Path中设置了JRE:

jre8

然而,编译器拒绝编译lambda表达式 - 我得到一个错误,看起来像我继续将其键入到Java 7中会得到的。

这是我正在使用的Eclipse版本:

Version: Kepler Service Release 1
Build id: 20130919-0819

解决此问题的唯一方法是安装新版本的Eclipse,还是我在配置中遗漏了某些内容?


答案 1

两件事:

首先,JRE与JDK不同。如果您确实拥有JDK,则需要在设置中配置eclipse以指向该JDK。

其次,在上面的屏幕截图中,编译器合规性级别设置为 1.7。这将像使用Java 1.7一样对待您的所有代码。将此更改为 1.8 以修复您的错误。

你需要有Eclipse Luna才能获得对Java 8的支持,但如果你愿意,你可以把它添加到开普勒SR2中。在你进一步讨论之前,我会尝试Luna和上述建议。请参阅此参考

一旦你得到了Luna,你的JAVA_HOME变量应该足以让Eclipse识别JDK 8。如果要指定其他 JDK,可以通过转到以下内容来添加新的 Java 系统库:

Project -> Properties -> Java Build Path -> Libraries -> Add Library -> Java System Library

并导航到 JDK 8 的有效位置。

您可以在此处下载平台的 JDK 8


答案 2

它导致eclipse kepler SR1不支持新的Java™ 8语言增强功能,如lambda表达式。

从这里的信息:http://www.eclipse.org/downloads/java8/
我认为你应该使用带有支持插件的开普勒SR2,或者更改为Eclipse Luna。


更新链接 16/09/2016: https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler


推荐