2017-02-08 24 views
2

Я пытаюсь подключиться к базе данных MongoDB, размещенной на mlab, используя драйвер Java на сервлете.java.lang.NoClassDefFoundError при использовании драйвера MongoDB

import org.bson.Document; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoClientURI; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 

public class MongoConnection { 

    protected void connectToMongo(String loc){ 

     String dbName = "readings"; 
     String collection = "data"; 

     MongoClientURI uri = new MongoClientURI("mongodb://user:[email protected]:43109/readings"); 
     MongoClient client = new MongoClient(uri); 
     MongoDatabase db = client.getDatabase(dbName); 

     MongoCollection<Document> readings = db.getCollection(collection); 

     Document doc = Document.parse(loc); 

     readings.insertOne(doc); 

     client.close(); 
    } 
} 

Проблема в том, я получаю следующее сообщение об ошибке: java.lang.NoClassDefFoundError: com/mongodb/MongoClientURI

я смотрел на один ответ (How to resolve ClassNotFoundException: com.mongodb.connection.BufferProvider?), который подчеркивает мне, что мне нужно другие банки, с тех пор я скачал их, однако я до сих пор получив эту ошибку.

Я использую Eclipse и добавляю три банки в путь сборки, перемещаясь по меню, щелкая правой кнопкой мыши по проекту, а затем следуя Build Path -> Configure build path -> Java build path -> libraries -> add external JARs.

Это правильный способ сделать это? Есть ли что-то еще, что я должен делать, а?

ответ

2

У вас есть java.lang.NoClassDefFoundError - это означает, что ваш класс пропущен во время выполнения (не во время сборки/компиляции). Поэтому вы должны открыть диалоговое окно «Run Configurations» для проекта (контекстное меню проекта -> «Запустить как» -> «Запустить конфигурации ...») и убедитесь, что у вас есть bson-xxx.jar, mongodb-driver-xxx. jar и mongodb-driver-core-xxx.jar, как это указано на вкладке Classpath. И да, как сказал Xavier Bouclet, если вы запустите его под сервером приложений, эти банки следует добавить в путь к вашему пути к классу.

+0

Каждый из драйверов указан в «вкладке Classpath» -> «User Entries» -> «MyProject (путь по умолчанию)». Затем я добавил к банкам путь к серверу, и это разрешило его. благодаря –

0

Вы должны убедиться, что банки mongodb экспортируются на сервер, если ваш вызов в базу данных сделан из сервлета.

Проверьте, как развернуть приложение на локальном сервере, убедитесь, что там есть банки.