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.26
Springboot
版本: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
的版本。