首页 > 解决方案 > IntelliJ 在 Java11 SpringBoot 项目上设置错误的语言级别

问题描述

我正在开发一个使用 Maven 构建的带有 Java 11 的 SpringBoot 应用程序。

IntelliJ 导入项目没有任何问题,但它向我显示了一个错误,例如使用。Map.of("A", "B")我需要提高语言水平的方法。显然 IntelliJ 没有正确检测到我正在使用的 java 版本。

在我的 pom.xml 中,我使用 spring-boot-maven-plugin 来构建

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

SO的其他答案(例如IDEA:javac:source release 1.7 requires target release 1.7)告诉我为maven-build-plugin设置“release”(或源/目标)属性,但这与spring-boot不兼容-maven-plugin(即导致依赖关系等问题)。

如何让 IntelliJ 自动识别 Java 语言级别并将其设置为 11,而无需在每次 pom.xml 重新导入后手动更改它?

标签: spring-bootmavenintellij-ideaidejava-11

解决方案


默认情况下,IntelliJ(截至 2020.3)假定 Java 语言级别为 8,如果未另行指定。

spring-boot-maven-plugin 尊重

<properties>
    <java.version>11</java.version>
</properties>

相应地设置和调整 maven-compiler-plugin 属性(发布、源、目标),IntelliJ 尊重这些属性以设置项目的 Java 语言级别。

只需将此属性添加到 pom.xml 并重新加载项目(不刷新,这对我不起作用)。

另请参阅如何在 Spring/Spring Boot pom.xml 中指定 Java 11 版本?有关幕后工作原理的更详细说明。


推荐阅读