Quarkus使用RestEasy Reactive的RestResponse返回时报ClassCastException错误
问题解决方案
错误根因
该类转换异常是项目内RESTEasy经典阻塞版本与RESTEasy Reactive版本依赖冲突导致:quarkus-spring-web依赖默认引入经典版RESTEasy实现,与RestResponse<T>所需的RESTEasy Reactive运行时委托实现不兼容,触发类类型转换错误。
修复方案
你可以根据自己的技术栈选择任意一种方案:
方案1:保留RESTEasy Reactive栈(推荐使用RestResponse<T>的场景)
- 移除pom.xml中的
quarkus-spring-web依赖,该依赖与RESTEasy Reactive生态不兼容,直接使用RESTEasy Reactive自带的JAX-RS注解开发接口即可 - 修正代码中
ResponseBuilder的导包,确保使用org.jboss.resteasy.reactive.RestResponse下的静态方法/构造器,简化后的代码示例如下:
import org.jboss.resteasy.reactive.RestResponse; import java.util.List; public RestResponse<List<SampleResponse>> findAll() { // 直接使用RestResponse的静态ok方法返回即可,无需手动构造Builder return RestResponse.ok(sampleService.findAll()); }
方案2:保留Spring Web栈
- 移除pom.xml中的
quarkus-resteasy-reactive、quarkus-resteasy-reactive-jackson两个RESTEasy Reactive相关依赖 - 改用Spring生态原生的
ResponseEntity<T>实现泛型返回值需求,示例代码如下:
import org.springframework.http.ResponseEntity; import java.util.List; public ResponseEntity<List<SampleResponse>> findAll() { return ResponseEntity.ok(sampleService.findAll()); }
内容的提问来源于stack exchange,提问作者Hugo Vinhal
相关产品推荐
相关产品推荐

