使用 MongoDB 驱动程序时出现 java.lang.NoClassDefFoundError

G.S*_*Ses 7 java eclipse noclassdeffounderror mongodb mlab

我正在尝试使用 servlet 上的 Java 驱动程序连接到托管在 mlab 上的 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:pass@ds143109.mlab.com: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();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我收到以下错误: java.lang.NoClassDefFoundError: com/mongodb/MongoClientURI

我查看了一个答案(How to resolve ClassNotFoundException: com.mongodb.connection.BufferProvider?),向我强调我需要其他 jars,我已经下载了它们,但是我仍然收到这个错误。

我正在使用 Eclipse 并将三个 jar 添加到构建路径中,通过右键单击项目然后按照Build Path -> Configure build path -> Java build path -> libraries -> add external JARs.

这是正确的方法吗?还有什么我应该做的/相反的吗?

小智 3

你有java.lang.NoClassDefFoundError- 这意味着你的类在运行时(而不是在构建/编译时)被错过。因此,您应该打开项目的“运行配置”对话框(项目上下文菜单 -> “运行方式” -> “运行配置...”)并确保您有 bson-xxx.jar、mongodb-driver-xxx。 jar 和 mongodb-driver-core-xxx.jar 以某种方式列在“类路径”选项卡中。是的,就像 Xavier Bouclet 所说 - 如果您在应用程序服务器下运行它 - 这个 jar 应该添加到您的服务器的类路径中。