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

itd*_*ork 29 java eclipse

我在eclipse中检查了一个来自SVN的Java项目,并意识到它需要Java 8,因为它使用了lambdas等.我为Java 8安装了eclipse插件并重新启动了eclipse,并且项目设置如下:

新Java项目

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

请日食

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

jre8

然而,编译器拒绝编译lambda表达式 - 我得到的错误看起来就像我继续将其输入到Java 7中所得到的错误.

这是我正在使用的eclipse版本

Version: Kepler Service Release 1
Build id: 20130919-0819
Run Code Online (Sandbox Code Playgroud)

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

Rya*_*n J 39

两件事情:

首先,JRE与JDK不同.如果你有JDK,你需要配置eclipse指向你设置中的那个.

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

您需要拥有Eclipse Luna才能获得对Java 8的支持,但如果需要,可以将其添加到Kepler SR2.在你再继续之前,我会尝试使用Luna和上述建议.请参阅此参考.

一旦获得Luna,您的JAVA_HOME变量应足以让Eclipse识别JDK 8.如果要指定其他JDK,可以通过以下方式添加新的Java System Library:

Project -> Properties -> Java Build Path -> Libraries -> Add Library -> Java System Library
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我应该在我的问题中加入 - UI不允许我更改该设置.下拉菜单结束于1.7.我现在正在检查JDK设置,因为我确实安装了JDK 8. (5认同)
  • 查看最新更新.您没有使用支持Java 8的Eclipse版本,这就是您无法更改合规性级别的原因.尝试使用更高版本的Eclipse. (3认同)
  • 我有Kepler SR2(Spring Tool Suite),但它不允许我将编译器符合性设置为1.8(我使用JDK 1.8运行STS,项目类路径具有1.8运行时).http://stackoverflow.com/questions/21955207/version-1-8-of-project-facet-java-does-not-exist上的答案显示了如何添加所需的插件.安装完成后,我能够将编译器合规性设置为1.8 (2认同)

ted*_*ddy 6

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

从这里的信息:http://www.eclipse.org/downloads/java8/
我认为你应该使用kepler SR2与支持插件,或更改为Eclipse Luna.


更新链接2016年6月16日:https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler