繁体   English   中英

Eclipse 2018-09 不会编译 Java 11 源代码; 认为它低于 1.7

[英]Eclipse 2018-09 won't compile Java 11 source; thinks it is below 1.7

我在 Windows 10 上运行 Eclipse 2018-09 (4.9.0)。我使用的是 Open JDK 11 GA。 我有一个指定为使用 Java 8 源代码的 Maven 项目。

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

在命令行上使用 Maven 3.5.3 编译得很好。 使用 Eclipse Eclipse 2018-09 (4.9.0) 也可以很好地编译。

我将编译 Java 版本更改为 Java 11:

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

使用 Maven 3.5.3 在命令行上仍然可以很好地构建。 但是在 Eclipse 2018-09 中,我到处都是错误:

  • '<>' operator is not allowed for source level below 1.7
  • Constructor references are allowed only at source level 1.8 or above
  • Default methods are allowed only at source level 1.8 or above

你明白了。

我已经使用Alt+F5在 Eclipse 中更新我的 Maven 项目(和子项目)。 我已经完成了彻底的清理和重建。

因为在命令行上使用 Maven 编译得很好,所以这一定是 Eclipse 问题,不是吗? 当然,Eclipse 尚不支持所有新的 Java 11 功能,但此代码没有 Java 11 特定功能 怎么了?

听起来 Eclipse 没有从 pom.xml 文件中获取版本。

我刚刚使用最新的Java 11 Support for Eclipse 2018-09插件测试了您的 pom 配置并验证了它是否有效,方法是提供问题中的编译器源和目标属性或本答案中描述的新版本属性。

在 Eclipse 首选项中正确设置 JDK 11 很重要。 在“已安装的 JRE”首选项页面上添加 JDK 11,然后将其与“执行环境”首选项页面上的 JavaSE-11 进行匹配。 否则更新 Maven 项目将导致使用默认的 JDK,这可能是您遇到的问题。

更新: Java 11从 4.10 版(2018 年 12 月 19 日发布)开始完全集成Eclipse 中,因此不再需要安装此插件。


出于某种原因,您需要安装一个额外的 Eclipse 插件“ Java 11 Support for Eclipse 2018-09 (4.9) (即使在 Eclipse Photon 4.9 中)

看来该插件在 Eclipse Marketplace 中不再可用。 我有人找到了它的安装网址,请在此处添加:

适用于 Eclipse - STS 4.0.1(基于 Eclipse 4.9)、Maven 3.6.0,带有这个 Maven Compiler Plugin Configuration

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>                
        </plugin>

此问题已在 Eclipse 2018-12 中修复。 升级到该版本将解决您的问题。

无需添加任何插件。

您只需要升级 eclipse,使其可以处理附件中提到的 jdk 11 编译器。

如果您可以选择设置 jdk 11 编译器,则无需升级 eclipse。

**注意:转到 Java 编译器帖子,选择项目属性,然后单击配置工作区设置以提及 JDK 11。

JDK 11 编译器设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM