Retrofit集成RxJava3报错:无法创建Observable<Object>调用适配器
问题原因及解决方案
核心问题
你混用了RxJava3的依赖和RxJava2的Retrofit适配器,导致Retrofit无法识别RxJava3的Observable类型:
- 接口返回的是RxJava3的
io.reactivex.rxjava3.core.Observable - Retrofit实例配置的却是RxJava2的
RxJava2CallAdapterFactory - 依赖中也只引入了RxJava2的适配器,没有对应RxJava3的版本
修复步骤
1. 替换Retrofit的RxJava适配器依赖
删掉RxJava2的适配器,换成RxJava3版本:
// 移除旧依赖 // implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0' // 添加RxJava3适配器 implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'
2. 更新Retrofit实例的CallAdapterFactory
把RxJava2CallAdapterFactory替换为RxJava3CallAdapterFactory:
Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL+VERSION) .addConverterFactory(GsonConverterFactory.create()) // 替换为RxJava3的适配器 .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) .client(new OkHttpClient().newBuilder().addInterceptor(new MyIntercepter()).build()) .build();
3. 同步依赖版本(可选但推荐)
确保所有Retrofit相关依赖版本一致,避免兼容性问题:
implementation "io.reactivex.rxjava3:rxjava:3.0.0" implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' // 指定具体版本,和Retrofit版本匹配
验证
修改完成后,Retrofit就能正确识别RxJava3的Observable类型,不会再抛出找不到CallAdapter的异常。
内容的提问来源于stack exchange,提问作者Prasath S
相关产品推荐
相关产品推荐

