我在Eclipse中使用mongodb-driver 3.5.0,我在IDE中没有错误,但是当我运行程序时,我得到:
线程中的异常" main" java.lang.NoSuchMethodError: com.mongodb.MongoClient.getDatabase(Ljava /郎/字符串;)LCOM / mongodb的/客户/ MongoDatabase;
是一个错误。我已经检查过了,我只是通过Maven依赖使用3.5.0。出于某种原因,在获得MongoClient之前的所有事情都可以正常工作,它只是getDatabase
不起作用。
编辑:我使用gradle依赖而不是Maven对项目进行了粗略的重建,这解决了这个问题。我会继续研究它以找到原因。
以下示例代码:
import org.bson.Document;
import org.bson.types.ObjectId;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.Block;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import static com.mongodb.client.model.Filters.*;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.ValidationOptions;
public static Document reportFind(String id, String destination) {
ObjectId objectId = ObjectId.get();
ObjectId provider_id = new ObjectId(id);
String provider_string = provider_id.toString();
String db = "loginapp";
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("loginapp");
MongoCollection<Document> coll = database.getCollection("reporttemplates");
System.out.println("Connected to database successfully");
答案 0 :(得分:0)
根据mongodb's current documentation,getDatabse的实现如下:
public MongoDatabase getDatabase(String databaseName)
参数: databaseName - 要检索的数据库的名称
返回: 表示指定数据库的MongoDatabase
抛出: IllegalArgumentException - 如果databaseName无效
根据您的实施情况,这似乎完全没问题。因此,我会花时间调查上述项目的构建过程。