我在 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 中获取版本。
我刚刚测试了您的 pom 配置并验证了它是否有效,方法是提供问题中的编译器源和目标属性或新的发布属性 as described in this answer , 使用最新的Java 11 Support for Eclipse 2018-09插入。
在 Eclipse 首选项中正确设置 JDK 11 很重要。在“Installed JRE”首选项页面上添加 JDK 11,然后将其与“Execution Environment”首选项页面上的 JavaSE-11 匹配。否则更新 Maven 项目将导致使用默认的 JDK,这很可能是您遇到的问题。
关于java - Eclipse 2018-09 不会编译 Java 11 源代码;认为低于1.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52539867/