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


2.解决的办法:将springboot版本升级为3.2.0,此时内置的lombok版本是1.8.30,
或者不升级springboot版本,将lombok版本升级下,这里指定为1.8.32



3.问题根本原因
- Java内部API变更
从Java 9开始,Oracle开始逐步移除和重构Java内部API,特别是com.sun.tools.javac包下的类。在Java 21中,JCTree$JCImport类的内部结构发生了变化:
旧版本:JCTree$JCImport类有qualid字段
Java 21:该字段被移除或重命名,导致Lombok在编译时无法访问这个字段- Lombok版本兼容性
Lombok 1.18.30:与Java 21兼容,已经适配了新的内部API结构
Lombok 1.18.32:虽然版本更新,但可能在某些情况下仍有兼容性问题
更早版本:使用旧的内部API,与Java 21不兼容
浙公网安备 33010602011771号