我想在此处记录此答案,以解决遇到与我相同的问题的其他人的困惑。使用 rxjava-core 和 rxjava-android 的 v0.18,每当我尝试从 Retrofit 调用返回 Observable 时,我都会收到以下 NoSuchMethod 异常。
java.lang.NoSuchMethodError: rx.schedulers.Schedulers.executor
为什么会发生这种情况,我该如何解决?
我想在此处记录此答案,以解决遇到与我相同的问题的其他人的困惑。使用 rxjava-core 和 rxjava-android 的 v0.18,每当我尝试从 Retrofit 调用返回 Observable 时,我都会收到以下 NoSuchMethod 异常。
java.lang.NoSuchMethodError: rx.schedulers.Schedulers.executor
为什么会发生这种情况,我该如何解决?
使用改造 1.5.1。
从其更改日志中,强调了添加。
版本 1.5.1 (2014-05-08)
- 新:@PartMap 注释接受多部分的键/值对映射。
- 修复:MockRestAdpater 使用来自其父 RestAdapter 的 ErrorHandler。
- 为 v0.18 更新了实验性 RxJava 支持,现在延迟初始化。
RxJava 0.18 版弃用并删除了 Schedulers.executor。RxJava 团队认为支持这个调度器和维护 Observable 的功能响应式合约存在太多问题。看来 Retrofit 依靠这个调度器来提供 Observable 结果。
有三个选项:
现在使用 0.17 版的 RxJava。你应该知道,executor 调度器并不能满足 Observables 的整个响应式合约。阅读以下错误链接了解详细信息,以便了解现有实现的弱点:
https://github.com/Netflix/RxJava/issues/711 https://github.com/Netflix/RxJava/issues/713
RxJava 中有新的调度器实现,可以解决原始执行器调度器的问题。你可以
等待新的改造来解决这个问题或
如果我可以针对此问题为 Retrofit 提供通用补丁,我将编辑我的答案并提交拉取请求。我现在不知道有什么好的选择。在这一点上,RxJava 作者正在激烈争论这个问题。