Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB反应流运行时依赖项错误,带有Alpakka Mongo连接器ClassNotFoundException_Mongodb_Scala_Akka_Reactive Streams_Alpakka - Fatal编程技术网

MongoDB反应流运行时依赖项错误,带有Alpakka Mongo连接器ClassNotFoundException

MongoDB反应流运行时依赖项错误,带有Alpakka Mongo连接器ClassNotFoundException,mongodb,scala,akka,reactive-streams,alpakka,Mongodb,Scala,Akka,Reactive Streams,Alpakka,我正在尝试将集成到一个严重依赖的应用程序中。该应用程序也利用了这一点。 我在运行时遇到依赖性问题。特别是,当我尝试使用Mongo连接器提供的MongoSink.insertOne方法时,我得到了某种成功/失败包装的NoClassDefFoundError。完整堆栈跟踪: java.lang.NoClassDefFoundError: com/mongodb/reactivestreams/client/Success at akka.stream.alpakka.mongodb.scal

我正在尝试将集成到一个严重依赖的应用程序中。该应用程序也利用了这一点。
我在运行时遇到依赖性问题。特别是,当我尝试使用Mongo连接器提供的
MongoSink.insertOne
方法时,我得到了某种成功/失败包装的
NoClassDefFoundError
。完整堆栈跟踪:

java.lang.NoClassDefFoundError: com/mongodb/reactivestreams/client/Success
    at akka.stream.alpakka.mongodb.scaladsl.MongoFlow$.$anonfun$insertOne$1(MongoFlow.scala:44)
    at akka.stream.impl.fusing.Map$$anon$1.onPush(Ops.scala:53)
    at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:541)
    at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:423)
    at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:625)
    at akka.stream.impl.fusing.ActorGraphInterpreter$SimpleBoundaryEvent.execute(ActorGraphInterpreter.scala:56)
    at akka.stream.impl.fusing.ActorGraphInterpreter$SimpleBoundaryEvent.execute$(ActorGraphInterpreter.scala:52)
    at akka.stream.impl.fusing.ActorGraphInterpreter$BatchingActorInputBoundary$OnNext.execute(ActorGraphInterpreter.scala:95)
    at akka.stream.impl.fusing.GraphInterpreterShell.processEvent(ActorGraphInterpreter.scala:600)
    at akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:769)
    at akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:784)
    at akka.actor.Actor.aroundReceive(Actor.scala:537)
    at akka.actor.Actor.aroundReceive$(Actor.scala:535)
    at akka.stream.impl.fusing.ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:691)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:577)
    at akka.actor.ActorCell.invoke(ActorCell.scala:547)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270)
    at akka.dispatch.Mailbox.run(Mailbox.scala:231)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:243)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.lang.ClassNotFoundException: com.mongodb.reactivestreams.client.Success
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 24 more
依赖项:

val akkaHttpVersion = "10.2.1"
val akkaVersion = "2.6.10"
val scalaTestVersion = "3.2.0"
val scalaHtmlScraperVersion = "2.2.0"
val loggerVersion = "1.2.3"
val alpakkaMongoVersion = "2.0.2"

libraryDependencies ++= Seq(
  "org.mongodb.scala" %% "mongo-scala-driver" % "4.1.1",
  "com.typesafe.akka" %% "akka-stream-typed" % akkaVersion,    
  "com.typesafe.akka" %% "akka-http" % akkaHttpVersion,
  "com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion,
  "com.lightbend.akka" %% "akka-stream-alpakka-mongodb" % "2.0.2",
  "ch.qos.logback" % "logback-classic" % loggerVersion,
  "org.scalactic" %% "scalactic" % scalaTestVersion,
  "org.scalatest" %% "scalatest" % scalaTestVersion,
 )

我还尝试添加
org.mongodb:mongodb驱动程序reactivestreams:4.1.1
依赖项,但出于某种原因
com.mongodb.reactivestreams.client.Success
不是二进制文件的一部分。我也试过不同的版本。我们一定会感谢你的帮助。我使用的是Scala 2.13.3

您的问题与Mongo反应流驱动程序有关。阿尔帕卡使用的版本有点旧(2019年8月13日)。请参见阿尔帕卡文件中的“直接依赖项”部分:

org.mongodb mongodb驱动程序反应流1.12.0

在该jar中,您可以找到Success类:


我确实看到了这一点,并添加了您刚才指定的确切依赖项。然而,在做了一些挖掘之后,我发现让org.mongodb.scala:mongoscala驱动程序4.1.1重写了从1.12.0到4.1.1的反应流版本。在将我的scala驱动程序降级到2.7.0版并添加了您提到的依赖项之后,我的问题得到了解决。谢谢你抽出时间。结论:Alpakka应更新其连接器。应注意的是,Alpakka 3.0将升级此依赖性。