You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 21 Spring Boot项目中Lombok注解失效问题求助

Spring Boot中Lombok注解生效失败,编译提示找不到getter/setter方法

我在开发Spring Boot项目时,使用Lombok的@Data、@Getter/@Setter等注解生成getter、setter、构造函数等样板代码。pom.xml中已添加正确的Lombok依赖(版本1.18.36),但编译时出现以下错误:

java: cannot find symbol
symbol: method setName(java.lang.String)
location: variable test of type com.abhishek.springboot.testlombok

IDE未提示Lombok生成方法缺失的错误,但项目编译失败——哪怕是测试用的实验项目,Lombok注解也完全不生效。我已经尝试了以下操作,但问题依旧:

  • 确认pom.xml中Lombok依赖配置正确
  • 开启IDE的注解处理功能,甚至重新安装了Lombok插件
  • 执行mvn clean install清理重建项目
  • 直接用终端执行mvn clean compile测试编译
  • 确认Java版本为21,且与Lombok 1.18.36兼容
  • 查看生成的.class文件的javap输出,确认确实没有生成对应的方法

可能的解决方案

1. 完善Maven编译插件的注解处理配置

Lombok需要在编译阶段被作为注解处理器识别,仅在dependencies中添加依赖可能不够。确保pom.xml中配置了maven-compiler-plugin,并指定Lombok为注解处理器:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version> <!-- 该版本支持Java 21,可按需调整 -->
            <configuration>
                <source>21</source>
                <target>21</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.36</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

如果已有maven-compiler-plugin配置,只需补充annotationProcessorPaths部分即可。

2. 升级Lombok版本至兼容Java 21的稳定版

虽然Lombok 1.18.36标注支持Java 21,但部分场景下可能存在兼容问题。建议升级到最新稳定版(如1.18.38),更新pom.xml中的版本号后重新执行mvn clean compile。

3. 检查IDE注解处理的细节配置

以IntelliJ IDEA为例:

  • 打开File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors
  • 确保勾选Enable annotation processing
  • 检查Processor path中是否包含Lombok的jar包,若没有则手动添加本地Maven仓库中的Lombok jar
  • 重启IDE,确保插件配置生效

4. 验证实体类的注解使用是否正确

确认实体类的注解没有语法错误:

  • 类上正确添加@Data(或组合使用@Getter+@Setter)
  • 没有手动编写与Lombok生成逻辑冲突的方法(比如自行实现了setName,会导致Lombok跳过生成)
  • 类的访问修饰符为public(避免潜在的访问权限问题)

示例正确的实体类:

package com.abhishek.springboot;

import lombok.Data;

@Data
public class TestLombok {
    private String name;
    private Integer age;
}

5. 清理本地Maven仓库的Lombok缓存

如果本地仓库中的Lombok jar包损坏,会导致注解处理器无法正常工作。删除本地仓库中org/projectlombok目录,重新执行mvn clean install下载完整的依赖包。


内容的提问来源于stack exchange,提问作者Abhishek Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:27:43