16

我在 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 特定的功能。怎么了?

4

4 回答 4

5

更新: 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 编译器插件配置

        <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>
于 2018-11-04T13:00:31.837 回答
5

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

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

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

于 2018-09-27T15:03:17.297 回答
0

无需添加任何插件。

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

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

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

JDK 11 编译器设置

于 2021-01-22T10:19:52.710 回答
0

This problem is fixed in Eclipse 2018-12. Upgrading to that version will resolve your issue.

于 2019-01-25T12:08:15.457 回答