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

二、根本原因

  1. 项目本身配置为 JDK 1.8 环境
  2. Lombok 版本较低,不支持 JDK 17+
  3. IDEA 中 Maven Runner 使用了高版本 JDK(17/21)进行编译
  4. 高版本 JDK 编译 JDK8 + 低版本 Lombok 项目,导致内部语法结构不兼容

三、关键知识点:两个 JDK 配置区别

  1. Maven → Importing → JDK for importer

    • 作用:IDEA 解析项目、代码提示、语法检查
    • 仅影响 IDE 界面,不影响实际编译
  2. Maven → Runner → JRE

    • 作用:真正执行 mvn compile/package 命令
    • 决定实际编译环境,是本次报错的核心原因

四、最终解决方案

  1. File → Settings → Build, Execution, Deployment → Build Tools → Maven → Importing

    • JDK for importer:选择 JDK 1.8
  2. File → Settings → Build, Execution, Deployment → Build Tools → Maven → Runner

    • JRE:选择 Use Project JDK 或者 JDK 1.8
  3. 刷新 Maven,执行编译命令

    mvn clean compile

五、总结

项目配置 JDK8 但 Maven Runner 使用高版本 JDK,会导致 Lombok 不兼容,出现 JCImport 错误。

统一两处 JDK 版本为 1.8 即可 100% 解决。

相关推荐
SL_staff4 小时前
规则联动:给工厂装上‘自动化神经反射弧’——JVS·物联网平台规则引擎实战教程
java·人工智能·物联网
骑着蜗牛撵大象3274 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
WJ.Polar4 小时前
Java封装、继承、多态
java·开发语言
ly76894 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
摇滚侠4 小时前
Java 中如何表示负数,有符号和无符号的区别,补码的计算规则,char byte short int long 的范围
java·开发语言
weixin_307779135 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
奇牙coding5 小时前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
爱读书的小胖5 小时前
Codewars:Rot13(C)解题分析
c语言·开发语言
小羊没烦恼!5 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
鸽鸽程序猿5 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python