Lombok 注解失效是 Java 开发中的常见问题,通常由依赖配置、IDE 支持或构建工具设置引起。最近在拉取别人springboot3+jdk21版本的项目时遇到了lombok注解失效,导致项目无法启动的问题,以下是我的解决方案:
首先检查idea 的lombok的注解设置:
务必和默认设置一样!!!
以下是网上的一些解决方案,希望对大家有所帮助:
Maven 项目
在 pom.xml
中确保依赖包含 annotationProcessor
配置:
org.projectlombok
lombok
1.18.30
provided
org.apache.maven.plugins
maven-compiler-plugin
3.11.0
org.projectlombok
lombok
1.18.30
Gradle 项目
在 build.gradle
中添加:
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.30'
annotationProcessor 'org.projectlombok:lombok:1.18.30'
}
⚠️ 关键点:
true
(会导致依赖传递失效)maven-compiler-plugin
版本(避免默认版本不兼容)File → Settings → Plugins
→ 搜索 Lombok
→ 安装并重启 IDE。File → Settings → Build, Execution, Deployment → Compiler → Annotation Processors
→ 勾选 ✅ Enable annotation processing 和 ✅ Obtain processors from project classpath。java -jar lombok.jar
→ 选择 Eclipse 安装路径安装 → 重启 IDE。File → Invalidate Caches → Invalidate and Restart
Project → Clean
# Maven
mvn clean install -U
# Gradle
./gradlew clean build --refresh-dependencies
环境 | 要求 |
---|---|
JDK | Lombok 1.18.22+ 支持 JDK 17+;Lombok 1.18.10+ 支持 JDK 11 |
IDE | IntelliJ 2020.3+ 或 Eclipse 2023-03+(旧版本需升级) |
构建工具 | Maven 3.6.3+/Gradle 7.x+(避免旧版注解处理兼容性问题) |
通过命令检查版本:
java -version # 确认 JDK mvn -v # 确认 Maven
@Data
public class User {
private String name;
private Integer age;
}
user.setName("test")
:
User.class
字节码(包含 setName()
/getName()
),则 Lombok 生效。pom.xml
中声明(或父模块依赖传递)。maven-compiler-plugin
中按需添加其他处理器路径(如 MapStruct):
org.projectlombok:lombok
org.mapstruct:mapstruct-processor
graph TD
A[Lombok失效] --> B[检查依赖配置]
A --> C[安装并启用IDE插件]
A --> D[清理缓存并重建项目]
A --> E[验证版本兼容性]
E --> F{是否解决?}
F -- 否 --> G[检查多模块/冲突]
F -- 是 --> H[成功]
若仍不生效,检查项目目录结构是否符合 Maven/Gradle 标准(非标准结构会导致注解处理器失效),或在 Lombok GitHub Issues 搜索具体错误。