文章目录
- [Maven 编译报错:java.lang.NoSuchFieldError: JCImport 问题总结](#Maven 编译报错:java.lang.NoSuchFieldError: JCImport 问题总结)
Maven 编译报错:java.lang.NoSuchFieldError: JCImport 问题总结
一、报错信息
ERROR\] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project mall-common: Fatal error compiling: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' -\> \[Help 1
二、根本原因
- 项目本身配置为 JDK 1.8 环境
- Lombok 版本较低,不支持 JDK 17+
- IDEA 中 Maven Runner 使用了高版本 JDK(17/21)进行编译
- 高版本 JDK 编译 JDK8 + 低版本 Lombok 项目,导致内部语法结构不兼容
三、关键知识点:两个 JDK 配置区别
-
Maven → Importing → JDK for importer
- 作用:IDEA 解析项目、代码提示、语法检查
- 仅影响 IDE 界面,不影响实际编译
-
Maven → Runner → JRE
- 作用:真正执行 mvn compile/package 命令
- 决定实际编译环境,是本次报错的核心原因
四、最终解决方案
-
File → Settings → Build, Execution, Deployment → Build Tools → Maven → Importing
- JDK for importer:选择 JDK 1.8
-
File → Settings → Build, Execution, Deployment → Build Tools → Maven → Runner
- JRE:选择 Use Project JDK 或者 JDK 1.8
-
刷新 Maven,执行编译命令
mvn clean compile
五、总结
项目配置 JDK8 但 Maven Runner 使用高版本 JDK,会导致 Lombok 不兼容,出现 JCImport 错误。
统一两处 JDK 版本为 1.8 即可 100% 解决。