简体   繁体   English

使用mongo-scala-driver 2.1.0运行我的第一个MongoClient Scala代码时出现错误

[英]Errors when running my first MongoClient scala code with mongo-scala-driver 2.1.0

I followed the instructions at http://mongodb.github.io/mongo-scala-driver/ to install for scala 2.11. 我按照http://mongodb.github.io/mongo-scala-driver/上的说明进行了安装,以便为Scala 2.11安装。 But my first class cannot run. 但是我的头等舱无法上课。

def main(args: Array[String]): Unit = {
   val mongoClient: MongoClient = if (args.isEmpty) MongoClient() else MongoClient("mongodb://localhost")
}

Exception: 例外:

Exception in thread "main" java.lang.NoSuchMethodError: com.mongodb.connection.DefaultClusterFactory.create(Lcom/mongodb/connection/ClusterSettings;Lcom/mongodb/connection/ServerSettings;Lcom/mongodb/connection/ConnectionPoolSettings;Lcom/mongodb/connection/StreamFactory;Lcom/mongodb/connection/StreamFactory;Ljava/util/List;Lcom/mongodb/event/ClusterListener;Lcom/mongodb/event/ConnectionPoolListener;Lcom/mongodb/event/ConnectionListener;Lcom/mongodb/event/CommandListener;Ljava/lang/String;Lcom/mongodb/client/MongoDriverInformation;)Lcom/mongodb/connection/Cluster;
    at com.mongodb.async.client.MongoClients.createMongoClient(MongoClients.java:188)
    at com.mongodb.async.client.MongoClients.create(MongoClients.java:181)
    at com.mongodb.async.client.MongoClients.create(MongoClients.java:123)
    at org.mongodb.scala.MongoClient$.apply(MongoClient.scala:102)
    at org.mongodb.scala.MongoClient$.apply(MongoClient.scala:77)
    at org.mongodb.scala.MongoClient$.apply(MongoClient.scala:51)
    at org.mongodb.scala.MongoClient$.apply(MongoClient.scala:43)
    at db.mongo.client.MongoClientExample$.main(MongoClientExample.scala:18)
    at db.mongo.client.MongoClientExample.main(MongoClientExample.scala)

I have had the same problem and it was due to a wrong dependency to the underlying Java driver. 我也遇到过同样的问题,这是由于对基础Java驱动程序的依赖关系错误。 The Mongo Spark connector had a dependency to version 3.2.2 of the Java driver, which apparently was also used by the Scala driver. Mongo Spark连接器具有Java驱动程序3.2.2版本的依赖关系,Scala驱动程序显然也使用了该版本。 I solved the problem by defining the dependencies as follows in sbt: 我通过在sbt中定义依赖项解决了该问题:

val mongoScalaDriver = "org.mongodb.scala" %% "mongo-scala-driver" % "2.1.0"
  val mongoJavaDriver = "org.mongodb" % "mongo-java-driver" % "3.4.2"
  val mongoSpark = Seq(mongoScalaDriver, mongoJavaDriver, "org.mongodb.spark" %% "mongo-spark-connector" % "2.0.0")

I use then mongoSpark in my library project. 然后在我的图书馆项目中使用mongoSpark。 Also, I added explicitly a dependency to version 3.4.2 of the Java driver. 另外,我显式添加了对Java驱动程序3.4.2版本的依赖。

我终于在build.sbt的另一行中解决了这个问题:

    libraryDependencies += "org.mongodb.scala" %% "mongo-scala-bson" % "2.1.0"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM