2017-02-08 19 views
2

我正嘗試使用servlet上的Java驅動程序連接到mlab上託管的MongoDB數據庫。當使用MongoDB驅動程序時出現java.lang.NoClassDefFoundError

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 - 這意味着您的類在運行時(不在構建/編譯期間)被錯過。所以你應該打開項目的「運行配置」對話框(項目上下文菜單 - >「運行方式」 - >「運行配置...」),並確保你有bson-xxx.jar,mongodb-driver-xxx。 jar和mongodb-driver-core-xxx.jar以某種方式列在Classpath選項卡中。是的,就像Xavier Bouclet所說 - 如果你在應用服務器下運行它 - 這個jar應該被添加到你的服務器的類路徑中。

+0

每個驅動程序都列在「類路徑選項卡」 - >「用戶條目」 - >「MyProject(默認類路徑)」下。然後我添加到jar到服務器類路徑,並解決它。謝謝 –

0

如果您使用servlet調用數據庫,則必須確保將mongodb jar導出到服務器。

檢查如何在本地服務器上部署應用程序dans確保罐子在那裏。

相關問題