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

相关推荐
知无不研2 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
数智化管理手记2 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
cfm_29142 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
鲸采云SRM采购管理系统3 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
C++ 老炮儿的技术栈3 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011163 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据3 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
0x534 小时前
Java网络编程(二)
java·服务器·网络
zlinear数据采集卡4 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Flittly4 小时前
【雕虫大技】Agent 动态 Skill 供应链安全加固(三):输出校验与治理闭环实战
java·spring boot·spring