Java 21中使用Lombok @Builder注解编译报错问题求助
Lombok @Builder 编译报错:找不到userMessage方法的解决方案
问题背景
使用Lombok 1.18.30 + Java 21,在IntelliJ IDEA中编译项目时出现以下错误:
java: cannot find symbol symbol: method userMessage(java.lang.String) location: class com.api.mscompras.controller.exceptionHandler.Problem.ProblemBuilder
核心原因
Lombok 1.18.30版本对Java 21的兼容性存在缺陷,Java 21的字节码规范和新特性与该版本Lombok的代码生成逻辑不匹配,导致Builder模式无法正确生成对应字段的setter方法。
解决步骤
升级Lombok版本:将Lombok升级至1.18.32及以上(官方从该版本开始完善Java 21支持)。
Maven依赖修改示例:<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> <scope>provided</scope> </dependency>Gradle依赖修改示例:
compileOnly 'org.projectlombok:lombok:1.18.32' annotationProcessor 'org.projectlombok:lombok:1.18.32'同步更新IDEA Lombok插件:打开IDEA的
File > Settings > Plugins,搜索Lombok插件并更新到最新版本,避免插件与依赖版本不兼容。确认注解处理器启用:进入
File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors,勾选Enable annotation processing选项。清理编译缓存并重新构建:执行项目构建工具的清理命令(Maven:
mvn clean install;Gradle:gradle clean build),再在IDEA中执行Build > Rebuild Project。
额外排查点
如果以上步骤无效,检查以下内容:
- 确认
Problem类中的userMessage字段存在,且未被@Builder.Exclude注解排除在Builder生成逻辑外。 - 尝试在
Problem类上同时添加@AllArgsConstructor与@Builder,确保Builder能正确识别所有字段。
内容的提问来源于stack exchange,提问作者user23206673
相关产品推荐
相关产品推荐

