【问题标题】:Why won't Eclipse switch the compiler to Java 8?为什么 Eclipse 不将编译器切换到 Java 8?
【发布时间】:2014-09-16 20:13:32
【问题描述】:

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

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

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

然而编译器拒绝编译 lambda 表达式 - 我得到一个错误,看起来如果我继续将它输入 Java 7 会得到什么。

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

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

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

【问题讨论】:

  • 我愿意。有没有我应该设置的地方?
  • 听起来您需要支持 Java 8 的较新版本的 Eclipse。您的第二个屏幕截图(Java 编译器首选项)需要设置为使用 1.8 合规性,早期版本不支持此功能。跨度>

标签: java eclipse


【解决方案1】:

两件事:

首先,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.7 结束。不过,我现在正在检查 JDK 设置,因为我确实安装了 JDK 8。
  • 您的 JAVA_HOME 环境变量设置为什么?
  • 查看最新更新。您没有使用支持 Java 8 的 Eclipse 版本,这就是您无法更改合规级别的原因。尝试使用更高版本的 Eclipse。
  • 我有 Kepler SR2(Spring Tool Suite),但它不允许我将编译器合规性设置为 1.8(我正在使用 JDK 1.8 运行 STS,并且项目类路径具有 1.8 运行时)。 stackoverflow.com/questions/21955207/… 上的答案显示了如何添加所需的插件。安装这些之后,我能够将编译器合规性设置为 1.8
  • 引用的“this reference”链接eclipse.org/downloads/java8返回404。我确实找到了wiki.eclipse.org/JDT_Core/Java8
【解决方案2】:

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

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


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

【讨论】:

  • This article 表示 Java 8 确实可以在 Eclipse Kepler SR1 上运行,并且链接了我使用的相同安装页面。不过,我还是会下载 Luna 看看能不能用。
  • 我没有尝试在 Kepler SR1 上安装它。但是按照文章,一旦插件安装成功,您可以在 GUI 中将 java 更改为 1.8。
  • 引用链接eclipse.org/downloads/java8返回404。我确实找到了wiki.eclipse.org/JDT_Core/Java8
【解决方案3】:

首先你应该获得 JdK 8。

如果你安装了 Jdk。

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

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

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

我有靛蓝和露娜。我可以在 luna 中设置 1.8,但在 indigo 中设置 1.7。Eclipse luna

您可以查看 eclipse 站点。它说eclipse luna肯定是关联jdk 8的属性。

【讨论】:

    【解决方案4】:

    即使我有同样的问题:

    • 新下载的 JDK 1.8.0

    • 已设置 JAVA_HOME

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

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

    • 已下载 Eclipse Mars

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

    然后我将 Eclipse Mars 解压到一个全新的目录,新建一个项目,现在我可以选择 1.8 了,哇! 大大减少了“Duplicate methods named spliterator...”的错误我在Java 1.8下编译我的代码时得到了,但是,还剩下一个:

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

    但是,这可能是因为我正在扩展 AbstractList 并实现 Set,所以我现在通过删除实现 Set 来解决这个问题,因为它并没有真正添加任何东西(除了表示我的集合只有独特的元素)

    【讨论】:

    • 我有同样的问题和“症状”,不知道为什么,但我重新下载了 Eclipse,我可以导入我的旧工作区,它仍然有效。万岁!
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

      我在使用 eclipse kepler 时遇到了类似的问题。我已按照以下步骤解决它

      • 转到 Eclipse 中的帮助并打开 Eclipse Market Place 选项。
      • 为开普勒搜索 jdk 1.8
      • 安装所需的插件。
      • 重启 Eclipse。

      参考这个链接http://techno-terminal.blogspot.in/2016/05/jdk-18-compiler-compliance-is-not.html

      【讨论】:

        【解决方案7】:

        这是一个老话题,但我只是想指出,我已经搜索了足够多的内容,发现 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】:

          假设您已经下载了 Jdk 1.8。您必须确保您的 Eclipse 版本支持 Jdk 1.8。单击“帮助”选项卡,然后选择“检查更新”。再试一次。

          【讨论】:

            【解决方案9】:

            首先安装JDK1.8设置为Path 打开 Eclipse 和打开 Eclipse Market Place 选项。 为开普勒搜索 jdk 1.8 安装所需的插件。 重启日食。 将编译器级别从首选项更改为 1.8。 如果仍然有错误,请单击该文件并将编译器设置显式更改为 Jdk 1.8

            【讨论】:

              【解决方案10】:

              老问题,但发布答案以防它对某人有所帮助。 已将构建路径配置为使用 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>
              

              【讨论】:

                【解决方案11】:
                <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>
                

                【讨论】:

                • 能否请您添加一些解释,这是谁回答了这个问题?
                猜你喜欢
                • 2018-12-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-08-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多