Mongo Scala Play - java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;]
Mongo Scala Play - java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;]
我正在尝试在 scala play mongo 原型上做一个基本的 CRUD。该代码作为独立的主要方法运行 - 但当作为通过控制器调用的播放应用程序执行时,会出现运行时异常
[debug] Running task... Cancel: Null, check cycles: false, forcegc: true
[info] play.api.Play - Application started (Dev)
[error] application -
! @7b9n058gm - Internal server error, for (GET) [/mongoTestUserCollection] ->
play.api.http.HttpErrorHandlerExceptions$$anon: Execution exception[[RuntimeException: java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;]]
at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280)
at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206)
at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160)
at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188)
at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:98)
at play.core.server.netty.PlayRequestHandler$$anonfun$$anonfun$apply.applyOrElse(PlayRequestHandler.scala:100)
at play.core.server.netty.PlayRequestHandler$$anonfun$$anonfun$apply.applyOrElse(PlayRequestHandler.scala:99)
at scala.concurrent.Future$$anonfun$recoverWith.apply(Future.scala:346)
at scala.concurrent.Future$$anonfun$recoverWith.apply(Future.scala:345)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;
at play.api.mvc.ActionBuilder$$anon.apply(Action.scala:463)
at play.api.mvc.Action$$anonfun$apply$$anonfun$apply$$anonfun$apply.apply(Action.scala:112)
at play.api.mvc.Action$$anonfun$apply$$anonfun$apply$$anonfun$apply.apply(Action.scala:112)
at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
at play.api.mvc.Action$$anonfun$apply$$anonfun$apply.apply(Action.scala:111)
at play.api.mvc.Action$$anonfun$apply$$anonfun$apply.apply(Action.scala:110)
at scala.Option.map(Option.scala:146)
at play.api.mvc.Action$$anonfun$apply.apply(Action.scala:110)
at play.api.mvc.Action$$anonfun$apply.apply(Action.scala:103)
at scala.concurrent.Future$$anonfun$flatMap.apply(Future.scala:253)
Caused by: java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;
at com.mongodb.MongoClientSettings$Builder.applyConnectionString(MongoClientSettings.java:181)
at org.mongodb.scala.MongoClient$.apply(MongoClient.scala:62)
at org.mongodb.scala.MongoClient$.apply(MongoClient.scala:50)
at com.test.db.mongodb.MongoDBConnector$.<init>(MongoDBConnector.scala:25)
at com.test.db.mongodb.MongoDBConnector$.<clinit>(MongoDBConnector.scala)
at com.test.db.mongodb.Repo$class.$init$(Repo.scala:15)
at com.test.db.mongodb.UserSessionHistory2MongoDBCollection$.<init>(Repo.scala:42)
at com.test.db.mongodb.UserSessionHistory2MongoDBCollection$.<clinit>(Repo.scala)
at com.test.controllers.AsyncController$$anonfun$testUserSessionHistory2MongoDBCollection.apply(AsyncController.scala:83)
at com.test.controllers.AsyncController$$anonfun$testUserSessionHistory2MongoDBCollection.apply(AsyncController.scala:83)
我尝试更改驱动程序版本 - 但还是出现同样的错误
Build.sbt:
scalaVersion := "2.11.8"
"org.mongodb.scala" %% "mongo-scala-driver" % "2.3.0",
"org.mongodb.scala" %% "mongo-scala-bson" % "2.3.0",
连接器:
val mongoClient: MongoClient = MongoClient("mongodb://server-internal.com:27017/")
val codecRegistry = fromRegistries(fromProviders(classOf[HistoryRecord]), DEFAULT_CODEC_REGISTRY )
val database = mongoClient.getDatabase("db-test").withCodecRegistry(codecRegistry)
如果我按如下方式调用此代码,则此代码有效:
object MongoService {
def makeMongoCalls(repo: Repo) = {
repo.insertHistoryRecords(5)
}
def main(args: Array[String]): Unit = {
makeMongoCalls(UserSessionHistory2MongoDBCollection)
}
}
Caused by: java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;
经常发生库冲突的情况。
- 运行
sbt clean
- 检查您是否没有其他 MongoDB 依赖项中的驱动程序。一些可以使用它的图书馆。
- 尝试从依赖项中删除
"org.mongodb.scala" %% "mongo-scala-bson" % "2.3.0"
。 "org.mongodb.scala" %% "mongo-scala-driver" % "2.3.0"
已经有了。
我正在尝试在 scala play mongo 原型上做一个基本的 CRUD。该代码作为独立的主要方法运行 - 但当作为通过控制器调用的播放应用程序执行时,会出现运行时异常
[debug] Running task... Cancel: Null, check cycles: false, forcegc: true
[info] play.api.Play - Application started (Dev)
[error] application -
! @7b9n058gm - Internal server error, for (GET) [/mongoTestUserCollection] ->
play.api.http.HttpErrorHandlerExceptions$$anon: Execution exception[[RuntimeException: java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;]]
at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280)
at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206)
at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160)
at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188)
at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:98)
at play.core.server.netty.PlayRequestHandler$$anonfun$$anonfun$apply.applyOrElse(PlayRequestHandler.scala:100)
at play.core.server.netty.PlayRequestHandler$$anonfun$$anonfun$apply.applyOrElse(PlayRequestHandler.scala:99)
at scala.concurrent.Future$$anonfun$recoverWith.apply(Future.scala:346)
at scala.concurrent.Future$$anonfun$recoverWith.apply(Future.scala:345)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;
at play.api.mvc.ActionBuilder$$anon.apply(Action.scala:463)
at play.api.mvc.Action$$anonfun$apply$$anonfun$apply$$anonfun$apply.apply(Action.scala:112)
at play.api.mvc.Action$$anonfun$apply$$anonfun$apply$$anonfun$apply.apply(Action.scala:112)
at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
at play.api.mvc.Action$$anonfun$apply$$anonfun$apply.apply(Action.scala:111)
at play.api.mvc.Action$$anonfun$apply$$anonfun$apply.apply(Action.scala:110)
at scala.Option.map(Option.scala:146)
at play.api.mvc.Action$$anonfun$apply.apply(Action.scala:110)
at play.api.mvc.Action$$anonfun$apply.apply(Action.scala:103)
at scala.concurrent.Future$$anonfun$flatMap.apply(Future.scala:253)
Caused by: java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;
at com.mongodb.MongoClientSettings$Builder.applyConnectionString(MongoClientSettings.java:181)
at org.mongodb.scala.MongoClient$.apply(MongoClient.scala:62)
at org.mongodb.scala.MongoClient$.apply(MongoClient.scala:50)
at com.test.db.mongodb.MongoDBConnector$.<init>(MongoDBConnector.scala:25)
at com.test.db.mongodb.MongoDBConnector$.<clinit>(MongoDBConnector.scala)
at com.test.db.mongodb.Repo$class.$init$(Repo.scala:15)
at com.test.db.mongodb.UserSessionHistory2MongoDBCollection$.<init>(Repo.scala:42)
at com.test.db.mongodb.UserSessionHistory2MongoDBCollection$.<clinit>(Repo.scala)
at com.test.controllers.AsyncController$$anonfun$testUserSessionHistory2MongoDBCollection.apply(AsyncController.scala:83)
at com.test.controllers.AsyncController$$anonfun$testUserSessionHistory2MongoDBCollection.apply(AsyncController.scala:83)
我尝试更改驱动程序版本 - 但还是出现同样的错误
Build.sbt:
scalaVersion := "2.11.8"
"org.mongodb.scala" %% "mongo-scala-driver" % "2.3.0",
"org.mongodb.scala" %% "mongo-scala-bson" % "2.3.0",
连接器:
val mongoClient: MongoClient = MongoClient("mongodb://server-internal.com:27017/")
val codecRegistry = fromRegistries(fromProviders(classOf[HistoryRecord]), DEFAULT_CODEC_REGISTRY )
val database = mongoClient.getDatabase("db-test").withCodecRegistry(codecRegistry)
如果我按如下方式调用此代码,则此代码有效:
object MongoService {
def makeMongoCalls(repo: Repo) = {
repo.insertHistoryRecords(5)
}
def main(args: Array[String]): Unit = {
makeMongoCalls(UserSessionHistory2MongoDBCollection)
}
}
Caused by: java.lang.NoSuchMethodError: com.mongodb.ConnectionString.getApplicationName()Ljava/lang/String;
经常发生库冲突的情况。
- 运行
sbt clean
- 检查您是否没有其他 MongoDB 依赖项中的驱动程序。一些可以使用它的图书馆。
- 尝试从依赖项中删除
"org.mongodb.scala" %% "mongo-scala-bson" % "2.3.0"
。"org.mongodb.scala" %% "mongo-scala-driver" % "2.3.0"
已经有了。