spring-boot - 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 重新导入后手动更改它?
解决方案
默认情况下,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 版本?有关幕后工作原理的更详细说明。
推荐阅读
- string - Pinescript 错误 - itemType 未定义
- c++ - 在指定命名空间内具有用户定义实现的自定义点
- android-studio - 在 org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler 类型的存储库容器上找不到参数 [] 的方法 mavencentral()
- sftp - 使用 libssh2 将非文本文件从远程复制到本地主机时出现问题
- css - css-grid 自动适应在不需要时创建额外的空列
- javascript - 如何在不使用 Redux 的情况下基于身份验证显示隐藏我的注销按钮?
- sql-server - 提取一行并将其转换为列标题
- c# - Ubuntu 上的 ASP.NET Core 执行路径
- mysql - 在 GCloud 应用引擎(Flask 应用程序)中连接到 Google Cloud SQL 数据库时出错
- webpack - Webpack 模块联合