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

相关推荐
小羊没烦恼!5 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里5 天前
java中的继承和多态的区别
java
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕5 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码5 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖5 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时5 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
vipxieliang5 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
C语言小火车5 天前
C/C++ 为什么需要编译器?
开发语言·c++