我正在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的特定功能。怎么了?
答案 0 :(得分:4)
更新:Java 11 is fully integrated在 Eclipse自版本4.10起(发布于2018-12-19)中,因此不再需要安装此插件。
由于某些原因,您需要安装其他Eclipse插件“ Java 11 Support for Eclipse 2018-09 (4.9)” (即使在Eclipse Photon 4.9中)
它表明该插件在Eclipse Marketplace中不再可用。我有人找到了其安装网址,请在此处添加:
适用于Eclipse的Works-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>
答案 1 :(得分:3)
听起来Eclipse没有从pom中获取版本。
我刚刚通过使用最新的as described in this answer插件提供了问题中的编译器源和目标属性或新的发行版属性Java 11 Support for Eclipse 2018-09来测试您的pom配置并验证了它的有效性。
在Eclipse首选项中正确设置JDK 11很重要。在“ Installed JRE”首选项页面上添加JDK 11,然后将其与“ Execution Environment”首选项页面上的JavaSE-11匹配。否则,更新Maven项目将导致使用默认的JDK,这很可能是您遇到的问题。
答案 2 :(得分:0)
此问题已在Eclipse 2018-12中修复。升级到该版本将解决您的问题。
答案 3 :(得分:0)