2017-08-25 5 views
0

Ich bin mit dem mongodb-Treiber 3.5.0 mit Eclipse, und ich bekomme keine Fehler in der IDE, aber wenn ich mein Programm laufen erhalte ich:BIRT Java Driver - getDatabase noSuchMethod Fehler

Exception in thread "main" java.lang.NoSuchMethodError: com.mongodb.MongoClient.getDatabase(Ljava/lang/String;)Lcom/mongodb/client/MongoDatabase;

als Error. Ich habe bereits überprüft und ich verwende nur 3.5.0 über eine Maven-Abhängigkeit. Aus irgendeinem Grund funktioniert alles, bevor der MongoClient funktioniert, es ist nur getDatabase, die nicht funktioniert.

EDIT: Ich habe eine grobe Wiederherstellung des Projekts mit einem Gradle Abhängigkeit statt Maven, und das hat das Problem gelöst. Ich werde weiter nachsehen, um die Ursache zu finden.

Beispiel-Code unten:

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

* aber wenn ich mein Programm ausführen bekomme ich Exception im Thread "main" * Wie führe ich das Programm aus? – nullpointer

+0

Dies wird in der Eclipse-IDE ausgeführt, ich habe eine Maven-Abhängigkeit für den Treiber verwendet und –

+0

möchten Sie vielleicht Ihre IDE-Laufkonfigurationen dann überprüfen, da die mit seinen Importen freigegebene Klasse für die 'getDatabase'-Implementierung gut aussieht. – nullpointer

Antwort

0

Gut nach der mongodb's current documentation die Umsetzung von getDatabse ist als:

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

Dies scheint völlig in Ordnung und zu Ihrer Implementierung nach. Ich würde daher Zeit in die Untersuchung des Build-Prozesses für das Projekt, von dem oben ein Teil ist, investieren.