Quarkus Reactive端点返回Uni报no serializer found错误如何解决
问题原因
报错的核心是Jackson尝试直接序列化Uni类型对象本身,而非Uni包裹的Tmp实例,和你Tmp类的配置无关。Quarkus默认只有引入RESTEasy Reactive相关模块后,才会自动识别Uni/Multi这类Mutiny响应式类型,先处理异步逻辑拿到返回值后再交给Jackson序列化,否则就会把Uni对象直接交给Jackson触发序列化失败。
解决方案
- 第一步:检查并替换正确的依赖
移除项目中传统阻塞版本的RESTEasy Jackson依赖quarkus-resteasy-jackson,引入响应式版本依赖:
Mavenpom.xml配置:
Gradle配置:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy-reactive-jackson</artifactId> </dependency>implementation("io.quarkus:quarkus-resteasy-reactive-jackson") - 第二步:如果已引入正确依赖仍报错,检查是否自定义了ObjectMapper
如果你手动注册了自定义的ObjectMapperBean覆盖了Quarkus默认配置,需要手动注册Mutiny专用的Jackson模块:import io.smallrye.mutiny.jackson.MutinyJacksonModule; // 初始化ObjectMapper时添加模块 objectMapper.registerModule(new MutinyJacksonModule()); - 验证方案:可临时将端点方法返回值改为
Tmp类型,直接返回new Tmp("Hello!")测试,如果接口返回正常即可确认问题出在响应式依赖配置上。
内容的提问来源于stack exchange,提问作者nano_nano
相关产品推荐
相关产品推荐

