升级到 JDK 21 后编译错误 - “NoSuchFieldError: JCImport does not have member field JCTree”

问题描述 投票:0回答:2

升级到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'
spring-boot compiler-errors upgrade lombok java-21
2个回答
7
投票

罪魁祸首就是龙目岛。与 JDK 21 兼容的最小 Lombok 版本是

1.18.30

这意味着最小的 Spring Boot 版本是

3.1.4
,除非您想干预 Spring Boot 自动配置并在项目中设置与 Spring Boot 默认值不同的 Lombok 版本。

参见:https://github.com/projectlombok/lombok/issues/3393


0
投票

遵循此处的第一个答案,我进行了以下更改,之前它将 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>
© www.soinside.com 2019 - 2024. All rights reserved.