2017-02-08 4 views
2

サーブレット上の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

私は他のjarファイルが必要であることを私に強調し1答(How to resolve ClassNotFoundException: com.mongodb.connection.BufferProvider?)を見て、私は以来、それらをダウンロードしているしかし、私はまだですこのエラーが発生します。

Eclipseを使用して3つのjarをビルドパスに追加し、プロジェクトを右クリックしてメニューをナビゲートしてから、Build Path -> Configure build path -> Java build path -> libraries -> add external JARsに従ってください。

これは正しい方法ですか?私は他にも何か/私の代わりにやるべきことはありますか?

答えて

2

あなたはです。つまり、実行中にクラスが見つからないことを意味します(ビルド/コンパイル時ではありません)。したがって、プロジェクトの[Run Configurations]ダイアログ(プロジェクトコンテキストメニュー - > Run As - > Run Configurations ...)を開き、bson-xxx.jar、mongodb-driver-xxxがあることを確認する必要があります。 jar、およびmongodb-driver-core-xxx.jarをクラスパスタブに表示します。そして、はい、Xavier Bouclet氏のように、アプリケーションサーバーで実行すると、このjarをサーバーのクラスパスに追加する必要があります。

+0

各ドライバは、「クラスパス」タブ - >「ユーザーエントリ」 - >「MyProject(デフォルトクラスパス)」にリストされています。私はjarにサーバーのクラスパスを追加し、これを解決しました。ありがとう –

0

データベースへの呼び出しがサーブレットから行われている場合は、mongodb jarをサーバーにエクスポートする必要があります。

ローカルサーバーにアプリケーションを配備する方法を確認してください。jarsが存在することを確認してください。

関連する問題