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

时间:2014-07-25 04:03:46

标签: java eclipse

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

New Java Project

我注意到底部附近,它表示默认的编译器合规性是1.7,所以我进入org.eclipse.jdt.core.prefs并将编译器合规性变量设置为1.8,按照 this answer。但是,在Project - >偏好 - > Java编译器,它仍然显示为:

eclipse please

我在项目中设置了JRE - > Java构建路径:

jre8

然而编译器拒绝编译lambda表达式 - 我得到一个错误,看起来就像我继续把它输入Java 7一样。

这是我使用

的eclipse版本
Version: Kepler Service Release 1
Build id: 20130919-0819

解决这个问题的唯一方法是安装新版本的Eclipse还是我在配置中遗漏了什么?

11 个答案:

答案 0 :(得分:38)

两件事:

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

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

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

一旦获得Luna,您的JAVA_HOME变量应该足以让Eclipse识别JDK 8。 如果要指定其他JDK,可以通过转到:

添加新的Java系统库
Project -> Properties -> Java Build Path -> Libraries -> Add Library -> Java System Library

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

您可以下载平台的JDK 8 here

答案 1 :(得分:5)

它导致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

答案 2 :(得分:3)

我有同样的问题,即使我有:

  • 刚刚下载的JDK 1.8.0

  • 设置JAVA_HOME

  • 命令行报告中的java -version 1.8

  • 控制面板中的Java设置为1.8

  • 下载了Eclipse Mars

Eclipse只允许我在编译器首选项中选择编译器合规性级别op到1.7,即使我安装的JRE是1.8.0。我也无法在已安装的JRE下面的执行环境中看到1.8,只有JavaSE-1.7(我甚至没有安装它!)。当我点击它时,它会显示" jdk1.8.0"作为兼容的JRE,所以我选择了它,但仍然没有变化。

然后我将Eclipse Mars解压缩到一个全新的目录,创建了一个新项目,现在我可以选择1.8,欢呼!这大大减少了"重复的方法命名为spliterator ... "我在Java 1.8下编译代码时遇到的错误,但是还剩下一个:

带有参数()和()的名为spliterator的重复默认方法继承自List和Set类型。

但是,这可能是因为我正在扩展AbstractList并实现Set,所以我现在通过删除实现Set来修复它,因为它并没有真正添加任何东西。 case(除了表示我的集合只有唯一元素)

答案 3 :(得分:1)

  

首先你应该得到JdK 8.

如果您安装了Jdk。

  

您应该使用cmd提示符或系统变量设置其路径。

有时可能会发生路径未设置,因为eclipse无法获取jdk的属性。

  

安装最新的ecipse luna可以解决您的问题。

我有靛蓝和月神。我可以在luna中设置1.8,在indigo中设置1.7。Eclipse luna

您可以查看eclipse网站。它说日食月神肯定会把jdk 8的属性联系起来。

答案 4 :(得分:1)

您必须安装JDT / Eclipse Java 8 Support for Kepler。 https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler

答案 5 :(得分:1)

我遇到了与eclipse kepler类似的问题。我已按照这些步骤解决了这个问题

  • 转到Eclipse和Oper Eclipse Market Place选项中的帮助。
  • 搜索jdk 1.8 for kepler
  • 安装所需的插件。
  • 重启日食。

供参考,请参阅此链接http://techno-terminal.blogspot.in/2016/05/jdk-18-compiler-compliance-is-not.html

答案 6 :(得分:1)

旧问题,但是发布答案以防他人。 已经将构建路径配置为使用JDK 1.2.81 但是,构建失败并显示以下错误:

 lambda expressions are not supported in -source 1.5
[ERROR]   (use -source 8 or higher to enable lambda expressions)

在最新的Eclipse(Photon)中,将以下条目添加到pom.xml即可。

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
  </properties>

答案 7 :(得分:0)

这是一个古老的主题,但我只想指出我已经搜索到足以发现Indigo版本无法更新到SE 1.8这里的链接在eclipse网站上给出以更新执行环境但是如果你试试它会给Indigo带来错误。

Image // wiki.eclipse.org/File:ExecutionEnvironmentDescriptionInstallation.png这是给出执行环境信息的链接。

https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler这显示了逐步更新执行环境。

我试图更新执行环境,但我也遇到了同样的错误。

答案 8 :(得分:0)

假设您已经下载了Jdk 1.8。你必须确保你的eclipse版本支持Jdk 1.8。点击&#34;帮助&#34;选项卡,然后选择&#34;检查更新&#34;。再试一次。

答案 9 :(得分:0)

首先安装设置为Path的JDK1.8 打开Eclipse和Oper Eclipse Market Place选项。 在Kepler中搜索JDK 1.8 安装所需的插件。 重新开始蚀。 从首选项将编译器级别更改为1.8。 如果仍然有错误,请单击该文件,然后将编译器设置显式更改为Jdk 1.8

答案 10 :(得分:0)

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
相关问题