升级到JDK 21后,我的Spring Boot项目出现以下编译错误:
Fatal error compiling: java.lang.NoSuchFieldError:
Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
罪魁祸首就是龙目岛。与 JDK 21 兼容的最小 Lombok 版本是
1.18.30
。
这意味着最小的 Spring Boot 版本是
3.1.4
,除非您想干预 Spring Boot 自动配置并在项目中设置与 Spring Boot 默认值不同的 Lombok 版本。
遵循此处的第一个答案,我进行了以下更改,之前它将 lombok 版本 1.18.20 作为默认版本,当我从 Spring Boot 2.XX 迁移到 3.3 时,我需要提供最新的内容来解决我的问题。 3
当执行 mvn dependency:tree 时,您可以看到较低版本的来源,以及 yopu 是否想要排除该版本和新版本或只是添加新版本并再检查一次,仍然会拉动旧版本,如果不只是添加新的如下所示。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>