
在使用 Spring Boot / Java 项目时,lombok.Data 几乎是标配。但很多人都会遇到一个“看起来像灵异事件”的问题:
IDEA 里代码能写,运行却报错;或者 IDEA 直接红线报错
本文将从 现象 → 原因 → 排查 → 彻底解决 → 最佳实践 五个维度,带你一次性解决 @Data 在 IDEA 中运行报错的问题。
cannot find symbol
symbol: method getOrderId()或:
NoSuchMethodError: com.xxx.OrderEvent.getOrderId()表现:
@Data
public class OrderEvent {
private String orderId;
}使用时:
orderEvent.getOrderId(); // IDEA 提示找不到方法InvalidDefinitionException:
No serializer found for class OrderEventLombok 是:
在编译期通过注解处理器(Annotation Processor)生成代码
因此它依赖三个东西:
少任何一个都会出问题。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
<scope>provided</scope>
</dependency>scope=provided 是推荐写法路径:
File → Settings → Plugins → 搜索 Lombok状态必须是:
⚠️ 安装后一定要 重启 IDEA
路径:
File
→ Settings
→ Build, Execution, Deployment
→ Compiler
→ Annotation Processors勾选:
点击:
Apply → OK → 重启 IDEA
mvn clean compile或:
Build → Rebuild Project这是很多人最困惑的一点。
👉 编辑器 ≠ 编译器
Java 版本 | Lombok 最低版本 |
|---|---|
8 | 1.18.20 |
11 | 1.18.24 |
17 | 1.18.28 |
21 | 1.18.30 |
在消息中间件(Kafka / Pulsar)中,经常会有:
@Data
public class OrderEvent {
private String orderId;
}如果 Lombok 失效,会导致:
实际上根因是 Lombok。
public record OrderEvent(String orderId, String status) {}优点:
Lombok 的问题,99% 都不是 Lombok 本身的问题,而是 IDEA 没配好。
只要记住一句话:
IDEA + Annotation Processing + 正确版本 Lombok
你就再也不会被 @Data 折磨。
如果你愿意,我可以帮你:
record