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

我正在尝试使用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 readings = db.getCollection(collection); Document doc = Document.parse(loc); readings.insertOne(doc); client.close(); } } 

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

我看了一个答案( 如何解决ClassNotFoundException:com.mongodb.connection.BufferProvider? ),向我突出显示我需要其他jar子,我已经下载了它们但是我仍然收到此错误。

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

这是正确的方法吗? 是否还有其他我应该做的事情呢?

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

如果从servlet调用数据库,则必须确保将mongodb jar导出到服务器。

检查您在本地服务器上部署应用程序的方式dans确保jar子在那里。