2017-08-25 126 views
0

我使用MongoDB的驱动器3.5.0使用Eclipse,我没有错误的IDE,但是当我运行我的程序,我得到:BIRT Java驱动程序 - getDatabase noSuchMethod错误

Exception in thread "main" java.lang.NoSuchMethodError: com.mongodb.MongoClient.getDatabase(Ljava/lang/String;)Lcom/mongodb/client/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

*但是当我运行我的程序时,我在线程“main”中得到异常*你如何执行程序? – nullpointer

+0

这是在Eclipse IDE中运行的,我用驱动程序的Maven依赖项以及 –

+0

然后你可能想检查你的IDE运行配置,因为与其导入共享的类在'getDatabase'实现中看起来很好。 – nullpointer

回答

0

那么根据mongodb's current documentation getDatabse的实现是:

public MongoDatabase getDatabase(String databaseName) 

Parameters: databaseName - the name of the database to retrieve

Returns: a MongoDatabase representing the specified database

Throws: IllegalArgumentException - if databaseName is invalid

这似乎完全没根据您的实现,以及。因此,我会投入时间调查上述项目的构建过程。