springboot项目启动报错:java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'

1.springboot版本是3.0.5+jdk21,内置的lombok版本是1.8.26

image
image

2.解决的办法:将springboot版本升级为3.2.0,此时内置的lombok版本是1.8.30,

或者不升级springboot版本,将lombok版本升级下,这里指定为1.8.32

image
image
image

3.问题根本原因

  1. Java内部API变更
    从Java 9开始,Oracle开始逐步移除和重构Java内部API,特别是com.sun.tools.javac包下的类。在Java 21中,JCTree$JCImport类的内部结构发生了变化:
    旧版本:JCTree$JCImport类有qualid字段
    Java 21:该字段被移除或重命名,导致Lombok在编译时无法访问这个字段
  2. Lombok版本兼容性
    Lombok 1.18.30:与Java 21兼容,已经适配了新的内部API结构
    Lombok 1.18.32:虽然版本更新,但可能在某些情况下仍有兼容性问题
    更早版本:使用旧的内部API,与Java 21不兼容
posted @ 2025-09-15 00:07  愚昧小生  阅读(317)  评论(0)    收藏  举报