在运行项目时出现java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'zz这样的报错
解决方法
1.第一步:在pom文件中将lombok的版本改成最新的
此时1.18.34是新版本,
然后刷新。
2.第二步:把该项目在终端打开,然后输入:mvn idea:idea
按enter运行
完成上述两步,再次运行程序就正常了。
下面是报错原因,以及每一步操作原理的解释
错误 java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
通常是由以下几个原因引起的:
-
Lombok 版本不兼容:Lombok 的某些版本可能不兼容你当前使用的 JDK 版本。
-
编译器缓存问题:IDE 或构建工具可能缓存了旧的编译结果,导致运行时出现问题。
-
IDE 配置问题:IDE 可能没有正确识别或处理 Lombok 注解。
解决步骤解释
第一步:更新 Lombok 版本
-
在 pom 文件中将 lombok 的版本改成最新的:
-
原因:确保你使用的是最新版本的 Lombok,因为新版本通常会修复一些已知的问题和不兼容性。
-
操作:编辑
pom.xml
文件,将 Lombok 的版本更新为最新版本,例如1.18.34
。
xml
深色版本
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.34</version> <scope>provided</scope> </dependency>
-
刷新:保存
pom.xml
文件后,刷新 Maven 项目,确保依赖项被正确下载和解析。在 IntelliJ IDEA 中,你可以右键点击项目,选择Maven -> Reload Project
。
-
第二步:重新生成 IDEA 项目文件
-
在终端中运行
mvn idea:idea
:-
原因:这个命令会生成或更新 IntelliJ IDEA 的项目文件(如
.iml
和.ipr
文件),确保 IDE 能够正确识别和处理项目的依赖关系和配置。 -
操作:在项目根目录下打开终端,运行以下命令:
sh
深色版本
mvn idea:idea
-
效果:这个命令会:
-
生成或更新
.iml
文件,这些文件描述了模块的结构和依赖关系。 -
生成或更新
.ipr
文件,这些文件描述了整个项目的配置。 -
确保 IntelliJ IDEA 能够正确解析和处理 Maven 项目的依赖关系。
-
-
综合效果
通过上述两个步骤,你能够:
-
确保使用最新的 Lombok 版本:这减少了因版本不兼容引起的问题。
-
更新 IDE 的项目配置:这确保 IDE 能够正确识别和处理 Lombok 注解和其他依赖关系。
具体步骤总结
-
更新 Lombok 版本:
-
编辑
pom.xml
文件,将 Lombok 版本更新为最新版本。 -
刷新 Maven 项目,确保依赖项被正确下载和解析。
-
-
重新生成 IDEA 项目文件:
-
在项目根目录下打开终端,运行
mvn idea:idea
。 -
这个命令会生成或更新 IntelliJ IDEA 的项目文件,确保 IDE 能够正确识别和处理项目的依赖关系和配置。
-
通过这些步骤,你的项目应该能够正常运行,不再出现 java.lang.NoSuchFieldError
错误。