2016-12-03 2 views
0

Ich verwende diesen Code, um eine Verbindung zur localhost mongodb-Datenbank herzustellen. nach der Verbindung, wenn ich Daten abrufen möchte, bekomme ich diese Ausnahme.Fehler auf asynchronen mongodb-Client vert.x

SEVERE: com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback(Lcom/mongodb/async/SingleResultCallback;)Lcom/mongodb/async/SingleResultCallback; 
java.lang.NoSuchMethodError: com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback(Lcom/mongodb/async/SingleResultCallback;)Lcom/mongodb/async/SingleResultCallback; 
    at com.mongodb.async.client.MongoClientImpl$2.execute(MongoClientImpl.java:100) 
    at com.mongodb.async.client.OperationIterable.batchCursor(OperationIterable.java:132) 
    at com.mongodb.async.client.OperationIterable.into(OperationIterable.java:64) 
    at com.mongodb.async.client.FindIterableImpl.into(FindIterableImpl.java:162) 
    at io.vertx.ext.mongo.impl.MongoClientImpl.findWithOptions(MongoClientImpl.java:235) 
    at io.vertx.ext.mongo.impl.MongoClientImpl.find(MongoClientImpl.java:217) 
    at verticle.ServerVerticle.start(ServerVerticle.java:53) 
    at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$8(DeploymentManager.java:434) 
    at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:316) 
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) 
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:418) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:440) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873) 
    at java.lang.Thread.run(Thread.java:745) 

mein Code:

MongoClient mongoClient = MongoClient.createShared(vertx, config().getJsonObject("mongodb")); 
     mongoClient.find("user",new JsonObject(),res->{ 
      if (res.succeeded()){ 
       List<JsonObject> jsonObjects=res.result(); 
       String name="ali"; 
       LOGGER.warn(jsonObjects.toString()); 
      } 
      else{ 
       String name="name"; 
      } 

     }); 

MongoDB Config unterhalb enthält db_name kommt, Port, Host und weitere Optionen, die ich für mongodb .Diese Optionen korrekt funktionieren Verbindung zur Datenbank müssen synchronisieren Client (I verwendet Vor).

"mongodb": { 
    "host" : "127.0.0.1", 
    "port" : 27017, 
    "db_name":"amibackend", 
    "maxPoolSize" : 50, 
    "minPoolSize" : 25, 
    "maxIdleTimeMS" : 300000, 
    "maxLifeTimeMS" : 3600000, 
    "waitQueueMultiple" : 10, 
    "waitQueueTimeoutMS" : 10000, 
    "maintenanceFrequencyMS" : 2000, 
    "maintenanceInitialDelayMS" : 500 
    } 

=========================================== =====
Abhängigkeiten dieses Projektes: (Vert.x)

<dependency> 
    <groupId>io.vertx</groupId> 
    <artifactId>vertx-core</artifactId> 
    <version>3.3.3</version> 
</dependency> 

<dependency> 
    <groupId>io.vertx</groupId> 
    <artifactId>vertx-web</artifactId> 
    <version>3.3.3</version> 
</dependency> 


<dependency> 
    <groupId>io.vertx</groupId> 
    <artifactId>vertx-mongo-client</artifactId> 
    <version>3.3.3</version> 
</dependency> 
+0

Können Sie Ihre Abhängigkeiten der Post hinzu? Das sieht nach einem Jar-Kompatibilitätsproblem aus. Überprüfen Sie insbesondere, ob die Version des mongo-asyn-Treibers mit dem von Ihnen verwendeten Vert-Client kompatibel ist. – Veeram

+0

hinzugefügt Abhängigkeiten. @ Veeram – WARM

Antwort

0

ich denke, Sie ein Problem mit der Version von mongodb Fahrer bekam. Ich würde empfehlen, dass Sie den mongodb-Treiber aktualisieren.

current version of ErrorHandlingResultCallback.java

history version of ErrorHandlingResultCallback.java

+0

Ich habe nicht die Version des Mongo-Treibers angegeben. Ich verwende einfach 'vert.x mongodb client' @Tan – WARM

+0

Danke .Das Problem war mit Mongo-Treiber. Existieren Sie Synchronisierungs-Mongo-Treiber, die Konflikte mit asynchronen Mongo-Treibern verursachen. – WARM