在播放 2 中使用 reactivemongo 0.12.1 时出错。5.X

Error using reactivemongo 0.12.1 with play 2.5.X

我尝试使用 play 2.5.12 升级到反应式 mongo 0.12.1,但是当我 运行 JVM 退出时,我得到以下堆栈跟踪:

线程 [application-akka.actor.default-dispatcher-2] 关闭 JVM 的未捕获错误,因为 'akka.jvm-exit-on-fatal-error' 已为 ActorSystem[application] java.lang.NoClassDefFoundError 启用:play/api/libs/concurrent/StateMachine 在java.lang.ClassLoader.defineClass1(Native Method) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:763) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass (URLClassLoader.java:467) 在 java.net.URLClassLoader.access100 美元(URLClassLoader.java:73) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:368) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:362) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:361) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 java.lang.ClassLoader.loadClass(ClassLoader.java :357) 在 play.api.libs.streams.impl.EnumeratorSubscriptionFactory$class.createSubscription(EnumeratorPublisher.scala:25) 在 play.api.libs.streams.impl.EnumeratorPublisher.createSubscription(EnumeratorPublisher.scala:33) 在 play.api.libs.streams.impl.EnumeratorPublisher.createSubscription(EnumeratorPublisher.scala:33) 在 play.api.libs.streams.impl.RelaxedPublisher.subscribe(RelaxedPublisher.scala:19) 在 akka.stream.impl.MaterializerSession.akka$stream$impl$MaterializerSession$$doSubscribe(StreamLayout.scala:1033) 在 akka.stream.impl.MaterializerSession.assignPort( StreamLayout.scala:1025) 在 akka.stream.impl.MaterializerSession$$anonfun$exitScope$2.apply(StreamLayout.scala:907) 在 akka.stream.impl.MaterializerSession$$anonfun$exitScope$2.apply(StreamLayout.scala:906) 在 scala.collection.Iterator$class.foreach(Iterator.scala:893) 在 scala.collection.AbstractIterator.foreach(Iterator.scala:1336) 在 akka.stream.impl.MaterializerSession.exitScope(StreamLayout.scala:906) 在 akka.stream.impl.MaterializerSession$$anonfun$materializeModule$1.apply(StreamLayout.scala:958) 在 akka.stream.impl.MaterializerSession$$anonfun$ma terializeModule$1.apply(StreamLayout.scala:950) 在 scala.collection.immutable.Set$Set3.foreach(Set.scala:163) 在 akka.stream.impl.MaterializerSession.materializeModule(StreamLayout.scala:950) 在 akka.stream.impl.MaterializerSession.materialize(StreamLayout.scala:917) 在 akka.stream.impl.ActorMaterializerImpl.materialize(ActorMaterializerImpl.scala:256) 在 akka.stream.impl.ActorMaterializerImpl.materialize(ActorMaterializerImpl.scala:146 ) 在 akka.stream.scaladsl.RunnableGraph.run(Flow.scala:350) 在 akka.stream.scaladsl.Source.runWith(Source.scala:81) 在 play.core.server.netty.NettyModelConversion.play$core$server$netty$NettyModelConversion$$createChunkedResponse(NettyModelConversion.scala:256) 在 play.core.server.netty.NettyModelConversion$$anonfun$convertResult$1.apply(NettyModelConversion.scala:189) 在 play.core.server.netty.NettyModelConversion$$anonfun$convertResult$1.apply (NettyModelConversion.scala:166) 在 play.core.server.common.ServerResultUtils$.resultConversionWithErrorHandling(ServerResultUtils.scala:127) 在 play.core.server.netty.NettyModelConversion.convertResult(NettyModelConversion.scala:235) 在 play.core.server.netty.PlayRequestHandler $$anonfun$play$core$server$netty$PlayRequestHandler$$handleAction$2$$anonfun$apply$3.apply(PlayRequestHandler.scala:273) 在 play.core.server.netty.PlayRequestHandler$$anonfun$play$core $server$netty$PlayRequestHandler$$handleAction$2$$anonfun$apply$3.apply(PlayRequestHandler.scala:267) 在 scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:253) 在 scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251) 在 scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) 在 play.api.libs.iteratee.Execution$trampoline$.executeScheduled(Execution.scala:110) 在 play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70) 在scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40) 在 scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248) 在 scala.concurrent.Promise$class.complete(Promise.scala:55) 在 scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153) 在 scala.concurrent.Future$$anonfun$andThen$1.apply(Future.scala :436) 在 scala.concurrent.Future$$anonfun$andThen$1.apply(Future.scala:435) 在 scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) 在 akka.dispatch.BatchingExecutor $AbstractBatch.processBatch(BatchingExecutor.scala:55) 在 akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$运行$1.apply$mcV$sp(BatchingExecutor.scala:91 ) 在 akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$运行$1.apply(BatchingExecutor.scala:91) 在 akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$运行 $1.apply(BatchingExecutor.scala:91) 在 scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72) 在 akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90) 在 akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39) 在 akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:415) 在 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 在 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 在 scala.concurrent.forkjoin.ForkJoinPool.运行Worker(ForkJoinPool.java:1979) 在 scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 原因:java.lang.ClassNotFoundException: play.api.libs.concurrent.StateMachine

任何帮助将不胜感激!

检查依赖关系图 (https://github.com/jrudolph/sbt-dependency-graph) 后,最终对我有用的是从 ReactiveMongo 中排除 play-iteratees。

在我的 build.sbt 中,将导入更改为:

"org.reactivemongo" %% "play2-reactivemongo" % reactiveMongoVersion excludeAll( ExclusionRule("com.typesafe.play", "play-iteratees_2.11")