开发Apache Pulsar生产者时Davis类无builder()方法编译错误如何解决
问题原因及解决方案
编译报错的核心排查方向
- 第一:IDE未正确配置Lombok支持
所有Java IDE默认无法识别Lombok注解生成的代码,需要完成两步配置:- 安装对应IDE的Lombok官方插件
- 开启IDE的注解处理开关:以IntelliJ IDEA为例,路径为
Settings > Build, Execution, Deployment > Compiler > Annotation Processors,勾选 Enable annotation processing 选项后重新编译项目。
- 第二:构建工具未配置Lombok注解处理器
仅引入Lombok依赖无法触发编译期的代码生成逻辑,需要在构建工具中补充注解处理器配置:- Maven配置示例(在pom.xml的build插件部分补充):
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>你的Lombok版本号</version> </path> </annotationProcessorPaths> </configuration> </plugin>- Gradle配置示例(在build.gradle的dependencies部分补充):
annotationProcessor 'org.projectlombok:lombok:你的Lombok版本号' compileOnly 'org.projectlombok:lombok:你的Lombok版本号'
其他代码错误修正
你当前代码还存在字段不匹配的问题,后续编译会触发二次报错:
Davis类中定义的温度字段名为 temperature,但你在生产者代码中调用Builder时写的是 .temp_out((float) 18.5556),需要把方法名改为 .temperature((float) 18.5556) 才能匹配生成的Builder方法。
可选优化建议
如果后续需要Pulsar的JSONSchema能正常序列化/反序列化Davis对象,建议给Davis类补充@Getter、@Setter注解,避免序列化时因字段访问权限问题报错。
内容的提问来源于stack exchange,提问作者Saverio Guzzo
相关产品推荐
相关产品推荐

