scala - (Scala + RxJava3) Flowables.orderedMerge NoSuchMethodError
问题描述
在 Ammonite 中,我执行以下代码...尝试对两个 Flowables 进行有序合并,
import $ivy.{
`io.circe::circe-generic:0.13.0` ,
`io.circe::circe-parser:0.13.0` ,
`io.circe::circe-optics:0.13.0` ,
`com.softwaremill.sttp::core:1.7.2` ,
`org.scalaz::scalaz-core:7.2.27` ,
`com.lihaoyi::requests:0.2.0` ,
`io.get-coursier::coursier-core:2.0.0-RC4` ,
`io.lemonlabs::scala-uri:1.4.10` ,
`net.liftweb::lift-json:3.4.0` ,
`io.reactivex.rxjava3:rxjava:3.0.3` ,
`com.github.akarnokd:rxjava3-extensions:3.0.0-RC7`
}
import io.lemonlabs.uri._
implicit val formats = net.liftweb.json.DefaultFormats
import net.liftweb.json.JsonAST._
import net.liftweb.json.Extraction._
import net.liftweb.json._
import io.reactivex.rxjava3.core._
import io.reactivex.rxjava3.functions._
import net.liftweb.json.JsonDSL._
import collection.JavaConverters._
import io.reactivex.rxjava3.subjects._
import scala.collection.mutable.HashMap
import io.reactivex.rxjava3.internal.functions.Functions
Flowables.orderedMerge(
List(
Flowable.just(3, 5),
Flowable.just(2, 4, 6)
).toIterable.asJava,
Functions.naturalComparator[Int]()
).subscribe(i=>println(i))
但是在打印 2 之后,它会抛出异常:
java.lang.NoSuchMethodError: io.reactivex.rxjava3.internal.subscribers.InnerQueuedSubscriber.requestOne()V
hu.akarnokd.rxjava3.operators.BasicMergeSubscription.drain(BasicMergeSubscription.java:268)
hu.akarnokd.rxjava3.operators.BasicMergeSubscription.innerComplete(BasicMergeSubscription.java:161)
io.reactivex.rxjava3.internal.subscribers.InnerQueuedSubscriber.onSubscribe(InnerQueuedSubscriber.java:69)
io.reactivex.rxjava3.internal.operators.flowable.FlowableFromArray.subscribeActual(FlowableFromArray.java:39)
io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15750)
io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15696)
hu.akarnokd.rxjava3.operators.BasicMergeSubscription.subscribe(BasicMergeSubscription.java:79)
hu.akarnokd.rxjava3.operators.FlowableOrderedMerge.subscribeActual(FlowableOrderedMerge.java:94)
io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15750)
io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15686)
io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15618)
ammonite.$sess.cmd63$.<clinit>(cmd63.sc:1)
有人可以帮我吗?我对此一无所知...
奇怪的是,它可以打印第一个订购的商品,但不能打印以下商品……
解决方案
rxjava3-extensions:3.0.0-RC7
不兼容rxjava:3.0.3
。候选版本不提供严格的兼容性保证。
升级rxjava3-extensions:3.0.0
或升级。
供将来参考NoSuchMethodError
几乎总是指示不兼容的库。异常消息中的未找到方法和堆栈跟踪顶部的方法很好地指示了涉及哪些库。
推荐阅读
- javascript - 在javascript中创建新的数组排序多维数组
- excel - 忽略 Google 表格中索引/排名中的空白
- sql-server - 分析服务将日期转换为日期时间
- groovy - 如何验证 Groovy 文件是否具有正确的语法而不运行它?
- ruby-on-rails - 如何在 Ruby on Rails 中的表之间添加查询
- jmeter - jmeter:需要执行 x 个 http 请求,每个请求有 3 个从 JSON 提取器结果中选取的对象,每 3 个
- react-native - 不变违规:元素类型无效:预期字符串:React-Native
- rabbitmq - RabbitMq 消费者直到它 ACK 或 NACK 前一条消息才收到另一条消息
- javascript - 如何将值插入到 fetch api 中的全局变量然后成功
- java - 将 Spring Batch Tasklet 失败消息传递给报告步骤。