Как разрешить ClassNotFoundException: com.mongb.connection.BufferProvider?
Я пытаюсь написать простой Java-код, который показывает коллекции MongoDB на консоли. Я добавил mongodb-driver-3.0.0.jar в свой путь к классам.
Но когда я пытаюсь выполнить код, он дает мне следующую ошибку в строке подключения к базе данных:
Исключение в потоке "main" java.lang.NoClassDefFoundError: com/mongodb/connection/BufferProvider at com.chintan.app.MongoDbJdbc.main(MongoDbJdbc.java:12) Вызвано: java.lang.ClassNotFoundException: com.mongb.connection.BufferProvider at java.net.URLClassLoader $1.run(Неизвестный источник) в java.net.URLClassLoader $1.run(Неизвестный источник) в java.security.AccessController.doPrivileged(собственный метод) в java.net.URLClassLoader.findClass(Неизвестный источник) в java.lang.ClassLoader.loadClass(Неизвестный источник) в sun.misc.Launcher $AppClassLoader.loadClass(Неизвестный источник) в java.lang.ClassLoader.loadClass(Неизвестный источник)... еще 1
Ниже приведен фрагмент кода:
public static void main(String[] args)
{
MongoClient mongoClient = new MongoClient("localhost", 27017); //Exception
@SuppressWarnings("deprecation")
DB db = mongoClient.getDB("mydb");
System.out.println("Database connection successfull.");
...
...
}
В чем проблема? Нужно ли добавлять еще одну банку в classpath или есть проблема с версией?
Ответы
Ответ 1
На странице драйвера mongo здесь: http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/installation-guide/#mongodb-driver
Вы увидите следующий текст:
Примечание: для mongodb-драйвера требуются следующие зависимости: bson и mongodb-driver-core
Итак, для выполнения этой работы вам нужны все следующие банки:
mongodb-driver-3.0.1.jar, mongodb-driver-core-3.0.1.jar, bson-3.0.1.jar
Что можно скачать здесь:
https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb-driver/3.0.1/
https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb-driver-core/3.0.1/
https://oss.sonatype.org/content/repositories/releases/org/mongodb/bson/3.0.1/
Ответ 2
Следующий java-драйвер содержит класс BufferProvider:
http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver/3.0.0
Ответ 3
Этот класс находится в файле mongodb-driver-core-3.0.0
jar, который требуется mongodb-driver-3.0.0.jar
. Вы можете увидеть зависимости java-драйверов в файле POM, связанном с этой банкой.
Я думаю, вам нужно использовать диспетчер зависимостей, чтобы автоматически добавлять транзитные зависимости MongoDB (и других компонентов) к вашему проекту (maven, gradle,...).
Ответ 4
Если у вас нет проекта maven, просто включите mongo-java-driver-3.6.1.jar(этот jar только для Java) в вашем проекте не нужно включать другие банки.
Ответ 5
включите файл mongo-java-driver-3.11.0.jar в путь к классу, а не в путь к модулю.