【发布时间】:2016-02-05 08:23:23
【问题描述】:
我正在使用mongolab 服务并在那里创建了我的帐户并创建了一个database。我成功地将本地 MongoDB 与 android 集成,现在尝试将我的 android 应用程序与 mongolab 连接,我按照网上提供的初步说明进行操作。我的代码
String textUri = "mongodb://xyz:MyPass_XYZ@ds023288.mongolab.com:23288/sample";
MongoClientURI uri = new MongoClientURI(textUri);
MongoClient m = new MongoClient(uri);
DB d=m.getDB("sample");
DBCollection collection = d.getCollection("mycollection");
但我得到运行时异常
com.mongodb.MongoException:java.lang.NoClassDefFoundError
我研究发现NoClassDefFounderror 在指定文件不存在时出现。该文件是
com.mongodb.connection.ScramSha1Autheticaor$ScramSha1SaslClient
我检查了mongoDB 网站,发现他们升级了,新的mongo 需要SCRAM-SHA-1 authentication。 Upgrading Link
我的mongoshell 使用的是 mongoversion 3.2.1,而 mongolab 版本是 3.0.9。由于SCRAM-SHA-1 是从3.0 开始的,所以这应该没问题。 3.0.9 也与 3.2.1 兼容。 MongoDB Versions Compatibility
知道如何解决这个问题。
【问题讨论】:
-
我认为您需要更新 Java 驱动程序的版本,而不是 mongo shell。请确保 Java 驱动程序版本符合此处列出的最低要求:docs.mongodb.org/manual/release-notes/3.0-scram/…