【发布时间】:2018-05-11 00:29:59
【问题描述】:
Mongo DB 服务器正在本地机器上运行。我可以毫无问题地打开 mongo shell 并查询数据库。
java 文件编译没有任何错误。但是在执行时出现错误。
Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/MongoClient
at mongoTest.main(mongoTest.java:26)
Caused by: java.lang.ClassNotFoundException: com.mongodb.MongoClient
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
我编写的示例 Java 代码如下所示。当我在命令提示符下执行文件时
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import java.util.Arrays;
import com.mongodb.Block;
import com.mongodb.client.MongoCursor;
import static com.mongodb.client.model.Filters.*;
import com.mongodb.client.result.DeleteResult;
import static com.mongodb.client.model.Updates.*;
import com.mongodb.client.result.UpdateResult;
import java.util.ArrayList;
import java.util.List;
public class mongoTest {
public static void main(String[] args) {
MongoClient c = new MongoClient("localhost", 27017);
MongoDatabase database = c.getDatabase("video");
MongoCollection collection = database.getCollection("movieDetails");
System.out.println(collection.count());
}
}
【问题讨论】:
-
看起来你的类路径有问题。你是如何执行程序的?通过 IDE 还是通过命令行?
-
在命令行编译java文件。编译期间没有错误。尝试使用命令 java mongoTest 执行相同的操作
-
而且,当你编译你的类时,你是否指定了一个指向 MongoDB JAR 的类路径选项?
-
是...仅供参考 MongoDB 服务器版本为 3.6.2,Java 8 更新 171 命令行中的编译语句为 - javac -cp .;C:\Java\jdk1.8.0_171\jre\lib \mongo\bson-3.6.2.jar;C:\Java\jdk1.8.0_171\jre\lib\mongo\mongodb-driver-3.6.2.jar;C:\Java\jdk1.8.0_171\jre\lib \mongo\mongodb-driver-core-3.6.2.jar;C:\Java\jdk1.8.0_171\jre\lib\mongo\mongo-java-driver-3.6.2.jar mongoTest.java 编译时没有错误
标签: java mongodb mongodb-query