2016-04-21 8 views
0

Ich habe den folgenden Code:MongoDriver and Play: java.lang.NoSuchMethodError: play.api.libs.json.JsLookup

import play.api.libs.json.Json 
import reactivemongo.api.MongoDriver 
import reactivemongo.play.json.BSONFormats 

import scala.concurrent.ExecutionContext.Implicits.global 

object DoesNotWork extends App { 
    val driver = new MongoDriver 
    val connection = driver.connection(List("localhost")) 
    val db = connection("superman") 
    var collection = db.collection("test") 

    val album = Json.obj(
    "title" -> "Back in Black", 
    "releaseYear" -> 1980, 
    "allMusicRating" -> Some(5.0), 
    "tracks" -> Json.arr(
     "Hells Bells", 
     "Shoot to Thrill") 
) 

    BSONFormats.toBSON(album) // crash 
} 

und die folgenden Abhängigkeiten:

<dependencies> 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>2.12.0-M4</version> 
    </dependency> 

    <dependency> 
     <groupId>com.typesafe.play</groupId> 
     <artifactId>play_2.11</artifactId> 
     <version>2.5.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.reactivemongo</groupId> 
     <artifactId>play2-reactivemongo_2.11</artifactId> 
     <version>0.11.11-play24</version> 
    </dependency> 

    <dependency> 
     <groupId>io.megl</groupId> 
     <artifactId>play-json-extra_2.11</artifactId> 
     <version>2.4.3</version> 
    </dependency> 

    <dependency> 
     <groupId>io.really</groupId> 
     <artifactId>jwt-scala_2.11</artifactId> 
     <version>1.2.2</version> 
    </dependency> 

    <dependency> 
     <groupId>com.typesafe.play</groupId> 
     <artifactId>play-json_2.11</artifactId> 
     <version>2.5.2</version> 
    </dependency> 
</dependencies> 

Doch während dieses Beispiel läuft bekomme ich

Exception in thread "main" java.lang.NoSuchMethodError: play.api.libs.json.JsLookup$.$bslash$extension(Lplay/api/libs/json/JsLookupResult;Ljava/lang/String;)Lplay/api/libs/json/JsLookupResult; 
    at reactivemongo.play.json.BSONFormats$BSONDateTimeFormat$DateValue$.unapply(package.scala:224) 
    at reactivemongo.play.json.BSONFormats$BSONDateTimeFormat$$anonfun$15.applyOrElse(package.scala:216) 
    at reactivemongo.play.json.BSONFormats$BSONDateTimeFormat$$anonfun$15.applyOrElse(package.scala:215) 
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171) 
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:172) 
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:172) 
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:172) 
    at scala.PartialFunction$Lifted.apply(PartialFunction.scala:224) 
    at scala.PartialFunction$Lifted.apply(PartialFunction.scala:220) 
    at reactivemongo.play.json.BSONFormats$class.toBSON(package.scala:393) 
    at reactivemongo.play.json.BSONFormats$.toBSON(package.scala:82) 
    at DoesNotWork$.delayedEndpoint$DoesNotWork$1(DoesNotWork.scala:22) 
    at DoesNotWork$delayedInit$body.apply(DoesNotWork.scala:7) 
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 
    at scala.App$$anonfun$main$1.apply(App.scala:76) 
    at scala.App$$anonfun$main$1.apply(App.scala:76) 
    at scala.collection.immutable.List.foreach(List.scala:376) 
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) 
    at scala.App$class.main(App.scala:76) 
    at DoesNotWork$.main(DoesNotWork.scala:7) 
    at DoesNotWork.main(DoesNotWork.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
Uncaught error from thread [reactivemongo-akka.actor.default-dispatcher-2] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[reactivemongo] 
java.lang.NoSuchMethodError: scala.collection.immutable.Stream.filter(Lscala/Function1;)Lscala/collection/immutable/Stream; 
    at reactivemongo.bson.BSONDocument.elements(types.scala:138) 
    at reactivemongo.bson.buffer.DefaultBufferHandler$BSONDocumentBufferHandler$.write(bufferhandlers.scala:90) 
    at reactivemongo.bson.buffer.DefaultBufferHandler$BSONDocumentBufferHandler$.write(bufferhandlers.scala:86) 
    at reactivemongo.bson.buffer.DefaultBufferHandler$.serialize(bufferhandlers.scala:226) 
    at reactivemongo.bson.buffer.DefaultBufferHandler$.writeDocument(bufferhandlers.scala:241) 
    at reactivemongo.api.BSONSerializationPack$.writeToBuffer(serializationpack.scala:73) 
    at reactivemongo.api.BSONSerializationPack$.writeToBuffer(serializationpack.scala:49) 
    at reactivemongo.api.SerializationPack$class.serializeAndWrite(serializationpack.scala:25) 
    at reactivemongo.api.BSONSerializationPack$.serializeAndWrite(serializationpack.scala:49) 
    at reactivemongo.api.commands.Command$.buildRequestMaker(commands.scala:216) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$sendIsMaster$1.apply(actors.scala:818) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$sendIsMaster$1.apply(actors.scala:810) 
    at scala.Option.map(Option.scala:146) 
    at reactivemongo.core.actors.MongoDBSystem$class.sendIsMaster(actors.scala:810) 
    at reactivemongo.core.actors.LegacyDBSystem.sendIsMaster(actors.scala:886) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$4$$anonfun$applyOrElse$23.apply(actors.scala:434) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$4$$anonfun$applyOrElse$23.apply(actors.scala:433) 
    at reactivemongo.core.nodeset.NodeSet$$anonfun$10.apply(nodeset.scala:110) 
    at reactivemongo.core.nodeset.NodeSet$$anonfun$10.apply(nodeset.scala:105) 
    at scala.collection.TraversableLike.scala$collection$TraversableLike$$$anonfun$3(TraversableLike.scala:234) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1409) 
    at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 
    at scala.collection.TraversableLike.map(TraversableLike.scala:234) 
    at scala.collection.AbstractTraversable.map(Traversable.scala:104) 
    at reactivemongo.core.nodeset.NodeSet.updateByChannelId(nodeset.scala:105) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$4.applyOrElse(actors.scala:433) 
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171) 
    at akka.actor.Actor$class.aroundReceive(Actor.scala:480) 
    at reactivemongo.core.actors.LegacyDBSystem.aroundReceive(actors.scala:886) 
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526) 
    at akka.actor.ActorCell.invoke(ActorCell.scala:495) 
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) 
    at akka.dispatch.Mailbox.run(Mailbox.scala:224) 
    at akka.dispatch.Mailbox.exec(Mailbox.scala:234) 
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 
[ERROR] [04/21/2016 13:45:51.467] [reactivemongo-akka.actor.default-dispatcher-2] [akka.actor.ActorSystemImpl(reactivemongo)] Uncaught error from thread [reactivemongo-akka.actor.default-dispatcher-2] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled 
java.lang.NoSuchMethodError: scala.collection.immutable.Stream.filter(Lscala/Function1;)Lscala/collection/immutable/Stream; 
    at reactivemongo.bson.BSONDocument.elements(types.scala:138) 
    at reactivemongo.bson.buffer.DefaultBufferHandler$BSONDocumentBufferHandler$.write(bufferhandlers.scala:90) 
    at reactivemongo.bson.buffer.DefaultBufferHandler$BSONDocumentBufferHandler$.write(bufferhandlers.scala:86) 
    at reactivemongo.bson.buffer.DefaultBufferHandler$.serialize(bufferhandlers.scala:226) 
    at reactivemongo.bson.buffer.DefaultBufferHandler$.writeDocument(bufferhandlers.scala:241) 
    at reactivemongo.api.BSONSerializationPack$.writeToBuffer(serializationpack.scala:73) 
    at reactivemongo.api.BSONSerializationPack$.writeToBuffer(serializationpack.scala:49) 
    at reactivemongo.api.SerializationPack$class.serializeAndWrite(serializationpack.scala:25) 
    at reactivemongo.api.BSONSerializationPack$.serializeAndWrite(serializationpack.scala:49) 
    at reactivemongo.api.commands.Command$.buildRequestMaker(commands.scala:216) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$sendIsMaster$1.apply(actors.scala:818) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$sendIsMaster$1.apply(actors.scala:810) 
    at scala.Option.map(Option.scala:146) 
    at reactivemongo.core.actors.MongoDBSystem$class.sendIsMaster(actors.scala:810) 
    at reactivemongo.core.actors.LegacyDBSystem.sendIsMaster(actors.scala:886) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$4$$anonfun$applyOrElse$23.apply(actors.scala:434) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$4$$anonfun$applyOrElse$23.apply(actors.scala:433) 
    at reactivemongo.core.nodeset.NodeSet$$anonfun$10.apply(nodeset.scala:110) 
    at reactivemongo.core.nodeset.NodeSet$$anonfun$10.apply(nodeset.scala:105) 
    at scala.collection.TraversableLike.scala$collection$TraversableLike$$$anonfun$3(TraversableLike.scala:234) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1409) 
    at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 
    at scala.collection.TraversableLike.map(TraversableLike.scala:234) 
    at scala.collection.AbstractTraversable.map(Traversable.scala:104) 
    at reactivemongo.core.nodeset.NodeSet.updateByChannelId(nodeset.scala:105) 
    at reactivemongo.core.actors.MongoDBSystem$$anonfun$4.applyOrElse(actors.scala:433) 
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171) 
    at akka.actor.Actor$class.aroundReceive(Actor.scala:480) 
    at reactivemongo.core.actors.LegacyDBSystem.aroundReceive(actors.scala:886) 
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526) 
    at akka.actor.ActorCell.invoke(ActorCell.scala:495) 
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) 
    at akka.dispatch.Mailbox.run(Mailbox.scala:224) 
    at akka.dispatch.Mailbox.exec(Mailbox.scala:234) 
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 

verschiedene Google-Ergebnisse zu diesem Thema, aber keiner von ihnen arbeitete dort waren. Ich gehe davon aus, dass ich eine Abhängigkeit einfach vermisse. Wie kann ich diesen Fehler beheben?

Antwort

1

Ich hatte dasselbe Problem nach der Aktualisierung von Playframework von 2,4 bis 2,5. Behoben durch Upgrade von reactivemongo auf 0.11.11. Ich kann sehen, dass Sie die gleiche reactiveMongo-Version verwenden. Ich vermute etwas mit JWT zu tun, siehe hierzu https://github.com/pauldijou/jwt-scala/issues/15

Verwandte Themen