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% 解决。

相关推荐
蜗牛一步步往上爬21 分钟前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
这个昵称不容易2 小时前
SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在
java·springboot·毕设
计算机毕设定制辅导-无忧学长2 小时前
《基于微信小程序的居家医疗陪护预约系统设计与实现》
java·spring boot·微信小程序·uniapp·居家医疗陪护预约系统
张张123y2 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
文丑颜不良啊3 小时前
LeetCode2221~2240题目解析
java·leetcode
秋饼4 小时前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发
冻柠檬飞冰走茶5 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
文丑颜不良啊5 小时前
LeetCode2161~2180题目解析
java·leetcode
FRing036 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊6 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法