2

我想在此处记录此答案,以解决遇到与我相同的问题的其他人的困惑。使用 rxjava-core 和 rxjava-android 的 v0.18,每当我尝试从 Retrofit 调用返回 Observable 时,我都会收到以下 NoSuchMethod 异常。

java.lang.NoSuchMethodError: rx.schedulers.Schedulers.executor

为什么会发生这种情况,我该如何解决?

4

2 回答 2

4

使用改造 1.5.1。

从其更改日志中,强调了添加。

版本 1.5.1 (2014-05-08)

  • 新:@PartMap 注释接受多部分的键/值对映射。
  • 修复:MockRestAdpater 使用来自其父 RestAdapter 的 ErrorHandler。
  • 为 v0.18 更新了实验性 RxJava 支持,现在延迟初始化。
于 2014-05-28T20:27:24.350 回答
1

RxJava 0.18 版弃用并删除了 Schedulers.executor。RxJava 团队认为支持这个调度器和维护 Observable 的功能响应式合约存在太多问题。看来 Retrofit 依靠这个调度器来提供 Observable 结果。

有三个选项:

  1. 现在使用 0.17 版的 RxJava。你应该知道,executor 调度器并不能满足 Observables 的整个响应式合约。阅读以下错误链接了解详细信息,以便了解现有实现的弱点:

    https://github.com/Netflix/RxJava/issues/711 https://github.com/Netflix/RxJava/issues/713

    RxJava 中有新的调度器实现,可以解决原始执行器调度器的问题。你可以

  2. 等待新的改造来解决这个问题或

  3. 热补丁您的库副本以使用另一个可能表现不同的调度程序实现。

如果我可以针对此问题为 Retrofit 提供通用补丁,我将编辑我的答案并提交拉取请求。我现在不知道有什么好的选择。在这一点上,RxJava 作者正在激烈争论这个问题。

https://github.com/Netflix/RxJava/issues/1219

于 2014-05-28T17:33:38.870 回答