首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Lombok @Data 在 IDEA 中运行报错解决方案

Lombok @Data 在 IDEA 中运行报错解决方案

作者头像
SmileNicky
发布2026-01-25 09:24:42
发布2026-01-25 09:24:42
920
举报
文章被收录于专栏:Nicky's blogNicky's blog

Lombok @Data 在 IDEA 中运行报错?一篇文章彻底解决

在使用 Spring Boot / Java 项目时,lombok.Data 几乎是标配。但很多人都会遇到一个“看起来像灵异事件”的问题:

IDEA 里代码能写,运行却报错;或者 IDEA 直接红线报错

本文将从 现象 → 原因 → 排查 → 彻底解决 → 最佳实践 五个维度,带你一次性解决 @Data 在 IDEA 中运行报错的问题。

一、常见报错现象

1️⃣ 编译期错误(最常见)
代码语言:javascript
复制
cannot find symbol
  symbol:   method getOrderId()

或:

代码语言:javascript
复制
NoSuchMethodError: com.xxx.OrderEvent.getOrderId()

表现:

  • IDEA 编辑器里一切正常
  • 一运行 / 一打包就失败

2️⃣ IDEA 编辑器红线
代码语言:javascript
复制
@Data
public class OrderEvent {
    private String orderId;
}

使用时:

代码语言:javascript
复制
orderEvent.getOrderId(); // IDEA 提示找不到方法

3️⃣ 运行时异常(Spring / Jackson / Pulsar)
代码语言:javascript
复制
InvalidDefinitionException:
No serializer found for class OrderEvent

二、问题的根本原因(重点)

❗ Lombok 不是 Java 语法

Lombok 是:

在编译期通过注解处理器(Annotation Processor)生成代码

因此它依赖三个东西:

  1. Maven / Gradle 依赖
  2. IDEA 的 Lombok 插件
  3. IDEA 的 Annotation Processing 开关

少任何一个都会出问题。


三、一步一步排查(照着做)


✅ Step 1:确认 Maven 依赖
代码语言:javascript
复制
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.32</version>
    <scope>provided</scope>
</dependency>
注意事项
  • 不要省略 version
  • scope=provided 是推荐写法
  • Java 17+ 请使用 1.18.28 以上

✅ Step 2:安装 IDEA 的 Lombok 插件(最容易忽略)

路径:

代码语言:javascript
复制
File → Settings → Plugins → 搜索 Lombok

状态必须是:

  • Installed
  • Enabled

⚠️ 安装后一定要 重启 IDEA


✅ Step 3:开启 Annotation Processing(90% 的坑)

路径:

代码语言:javascript
复制
File
 → Settings
   → Build, Execution, Deployment
     → Compiler
       → Annotation Processors

勾选:

  • ☑ Enable annotation processing
  • ☑ Obtain processors from project classpath

点击:

Apply → OK → 重启 IDEA


✅ Step 4:重新构建项目
代码语言:javascript
复制
mvn clean compile

或:

代码语言:javascript
复制
Build → Rebuild Project

四、为什么 IDEA 能写代码却运行报错?

这是很多人最困惑的一点。

原因:
  • IDEA 只是在“猜” Lombok 生成的方法
  • 真正的代码生成发生在 编译阶段
  • 如果 Annotation Processing 没开:
    • 编译器根本不知道 getter/setter 存在

👉 编辑器 ≠ 编译器


五、Java 17 / Spring Boot 3 的额外注意事项

Java 版本

Lombok 最低版本

8

1.18.20

11

1.18.24

17

1.18.28

21

1.18.30

  • 老版本 Lombok 会直接编译失败
  • 建议始终使用最新版

六、Spring Boot / Pulsar 场景下的隐藏坑

在消息中间件(Kafka / Pulsar)中,经常会有:

代码语言:javascript
复制
@Data
public class OrderEvent {
    private String orderId;
}

如果 Lombok 失效,会导致:

  • Jackson 无法反序列化
  • Consumer 启动失败
  • 报错看起来像是“消息中间件问题”

实际上根因是 Lombok。


七、最佳实践建议(生产级)

✅ 方案一:继续用 Lombok(推荐)
  • 配好 IDEA
  • 统一 Lombok 版本
  • 写清楚 README

✅ 方案二:使用 Java Record(Java 17+)
代码语言:javascript
复制
public record OrderEvent(String orderId, String status) {}

优点:

  • 无 Lombok 依赖
  • 天然不可变
  • 非常适合消息对象

八、快速自检清单

  • pom.xml 有 lombok 依赖
  • IDEA 安装 Lombok 插件
  • Annotation Processing 已开启
  • IDEA 已重启
  • Lombok 版本 ≥ Java 要求

九、总结

Lombok 的问题,99% 都不是 Lombok 本身的问题,而是 IDEA 没配好。

只要记住一句话:

IDEA + Annotation Processing + 正确版本 Lombok

你就再也不会被 @Data 折磨。

十、延伸阅读(可选)

  • Lombok vs Java Record 如何选?
  • Lombok 在 CI / Docker 中为什么没问题?
  • Lombok 和 MapStruct / Pulsar 一起用的坑

如果你愿意,我可以帮你:

  • 🔍 定位你当前项目的具体 Lombok 错误
  • 🧪 给你一个最小可复现 Demo
  • 🔁 帮你决定要不要迁移到 record
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lombok @Data 在 IDEA 中运行报错?一篇文章彻底解决
    • 一、常见报错现象
      • 1️⃣ 编译期错误(最常见)
      • 2️⃣ IDEA 编辑器红线
      • 3️⃣ 运行时异常(Spring / Jackson / Pulsar)
    • 二、问题的根本原因(重点)
      • ❗ Lombok 不是 Java 语法
    • 三、一步一步排查(照着做)
      • ✅ Step 1:确认 Maven 依赖
      • ✅ Step 2:安装 IDEA 的 Lombok 插件(最容易忽略)
      • ✅ Step 3:开启 Annotation Processing(90% 的坑)
      • ✅ Step 4:重新构建项目
    • 四、为什么 IDEA 能写代码却运行报错?
      • 原因:
    • 五、Java 17 / Spring Boot 3 的额外注意事项
    • 六、Spring Boot / Pulsar 场景下的隐藏坑
    • 七、最佳实践建议(生产级)
      • ✅ 方案一:继续用 Lombok(推荐)
      • ✅ 方案二:使用 Java Record(Java 17+)
    • 八、快速自检清单
    • 九、总结
    • 十、延伸阅读(可选)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档