02_解决Class com.sun.tools.javac.tree.JCTree
解决Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tree.JCTree qualid’
问题描述:
今天在启动SpringBoot项目时,遇见java: java.lang.NoSuchFieldError报错。
java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'翻译:
java: java.lang包下没有这样的字段错误: 类 com.sun.tools.javac.tree.JCTree$JCImport 没有名为 'com.sun.tools.javac.tree.JCTree qualid' 的成员字段

故障排查
问题原因:Lombook 与 JDK 版本不兼容。
- 项目
JDK版本:JDK21 Lombok版本:1.18.26Springboot版本:2.7.12
故障解决
-
降低
JDK版本需将
JDK版本降为JDK17及以下。 -
提升
Lombok版本需将
Lombok版本升为1.18.28及以上。
由于本项目为 Springboot 项目,Lombok等依赖的版本已经被 Springboot给指定,所以建议要么调整 Springboot 的版本,不建议手动指定 Lombok 版本。
故障总结
版本,不建议手动指定 Lombok 版本。
故障总结
在启动 Spring Boot 项目时遇到了 java.lang.NoSuchFieldError 错误,原因是使用的 Lombok 版本 (1.18.26) 与当前 JDK21 不兼容。通过将 JDK 版本降为 JDK17 或提升 Lombok 至版本 1.18.28 及以上可解决问题。鉴于 Spring Boot 管理着依赖的版本,建议调整 Spring Boot 的版本以确保兼容性,而不是手动指定 Lombok 的版本。
