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

时间:2018-09-27 14:57:54

标签: java eclipse maven java-11 eclipse-2018-09

我正在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 个答案:

答案 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)

无需添加任何插件。

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

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

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

JDK 11 Compiler Setting