java.lang.NoClassDefFoundError 使用 MongoDB 驱动程序时
java.lang.NoClassDefFoundError when using MongoDB driver
我正在尝试使用 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();
}
}
问题是我收到以下错误:
java.lang.NoClassDefFoundError: com/mongodb/MongoClientURI
我看了一个答案 (),它向我强调我需要其他 jar,我已经下载了它们,但我仍然收到此错误。
我正在使用 Eclipse 并将三个 jar 添加到构建路径,通过右键单击项目然后跟随 Build Path -> Configure build path -> Java build path -> libraries -> add external JARs
浏览菜单。
这样做正确吗?作为 well/instead,我还应该做些什么吗?
如果从 servlet 调用数据库,则必须确保 mongodb jar 已导出到服务器。
检查您如何在本地服务器上部署您的应用程序,并确保 jars 在那里。
您有 java.lang.NoClassDefFoundError
- 这意味着您的 class 在 运行 时间内(而不是在 build/compile 时间内)丢失。所以你应该打开项目的 "Run Configurations" 对话框(项目上下文菜单 -> "Run As" -> "Run Configurations...")并确保你有 bson-xxx.jar,[=18= .jar 和 mongodb-driver-core-xxx.jar 以某种方式列在类路径选项卡中。是的,就像 Xavier Bouclet 所说 - 如果你 运行 它在应用程序服务器下 - 这个 jars 应该添加到你服务器的 class 路径。
我的 Mule 4 项目遇到了类似的问题。
Failed to invoke lifecycle phase "initialise" on object:
那是指向:
java.lang.NoClassDefFoundError: com/mongodb/MongoClientURI
所以我必须在插件部分更新 POM 文件(mule-mave-plug,我知道它在 java 项目中会是什么):
<sharedLibraries>
<sharedLibrary>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-legacy</artifactId>
</sharedLibrary>
</sharedLibraries>
我正在尝试使用 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();
}
}
问题是我收到以下错误:
java.lang.NoClassDefFoundError: com/mongodb/MongoClientURI
我看了一个答案 (
我正在使用 Eclipse 并将三个 jar 添加到构建路径,通过右键单击项目然后跟随 Build Path -> Configure build path -> Java build path -> libraries -> add external JARs
浏览菜单。
这样做正确吗?作为 well/instead,我还应该做些什么吗?
如果从 servlet 调用数据库,则必须确保 mongodb jar 已导出到服务器。
检查您如何在本地服务器上部署您的应用程序,并确保 jars 在那里。
您有 java.lang.NoClassDefFoundError
- 这意味着您的 class 在 运行 时间内(而不是在 build/compile 时间内)丢失。所以你应该打开项目的 "Run Configurations" 对话框(项目上下文菜单 -> "Run As" -> "Run Configurations...")并确保你有 bson-xxx.jar,[=18= .jar 和 mongodb-driver-core-xxx.jar 以某种方式列在类路径选项卡中。是的,就像 Xavier Bouclet 所说 - 如果你 运行 它在应用程序服务器下 - 这个 jars 应该添加到你服务器的 class 路径。
我的 Mule 4 项目遇到了类似的问题。
Failed to invoke lifecycle phase "initialise" on object:
那是指向:
java.lang.NoClassDefFoundError: com/mongodb/MongoClientURI
所以我必须在插件部分更新 POM 文件(mule-mave-plug,我知道它在 java 项目中会是什么):
<sharedLibraries>
<sharedLibrary>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-legacy</artifactId>
</sharedLibrary>
</sharedLibraries>