Fongo 2.1.0 не работает с Java-драйвером Mongo 3.2.8 - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь обновить mongodb до 4.x с 3.x, так как нам нужна поддержка транзакций в mongodb, а также использование fongo для юнитов.Я изменил версию для приведенных ниже зависимостей:

<spring-data-mongodb-version>2.1.0.RELEASE</spring-data-mongodb-version>
<spring-data-commons-version>2.1.0.RELEASE</spring-data-commons-version>
<spring-framework-version>5.0.8.RELEASE</spring-framework-version>
<mongo-java-driver>3.2.8</mongo-java-driver>
fongo -> 2.1.0

Добавлен ниже указанный код в классTestConfig:

private static final MongoClient createNewMongo() {
    Fongo fongo = new Fongo("fongo");
    MongoClient mongo = fongo.getMongo();
    return mongo;
  }
@Override
  @Bean
  public MongoTemplate mongoTemplate() throws Exception {
    Fongo fongo = new Fongo("fongo");
    MongoClient mongo = fongo.getMongo();
    return new MongoTemplate(mongo, DATABASE_NAME);
  }

  @Bean
  public MongoClient mongoClient() {
    MongoCredential mongoCredential = MongoCredential
        .createMongoCRCredential("ext-catalog", "ext-catalog",
            "ext-catalog".toCharArray());
    List<MongoCredential> credentialsList = new ArrayList<>();
    credentialsList.add(mongoCredential);

    ServerAddress serverAddress = null;
    try {
      serverAddress = new ServerAddress("localhost" , 27017 );
    } catch (Exception e) {
      e.printStackTrace();
    }
    return new MongoClient(serverAddress, credentialsList);
  }

Получение ниже данной ошибки:

java.lang.NoClassDefFoundError: com/mongodb/FongoMongoDatabase
    at com.mongodb.MockMongoClient.getDatabase(MockMongoClient.java:88) ~[fongo-2.1.0.jar:na]
    at org.springframework.data.mongodb.core.SimpleMongoDbFactory.doGetMongoDatabase(SimpleMongoDbFactory.java:105) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.MongoDbFactorySupport.getDb(MongoDbFactorySupport.java:107) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.MongoDbFactorySupport.getDb(MongoDbFactorySupport.java:95) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.MongoDatabaseUtils.doGetMongoDatabase(MongoDatabaseUtils.java:108) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.MongoDatabaseUtils.getDatabase(MongoDatabaseUtils.java:68) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.MongoTemplate.doGetDatabase(MongoTemplate.java:2235) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:534) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.DefaultIndexOperations.execute(DefaultIndexOperations.java:218) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.DefaultIndexOperations.ensureIndex(DefaultIndexOperations.java:121) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.createIndex(MongoPersistentEntityIndexCreator.java:145) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]

Есть ликакой-нибудь способ это исправить?Я нашел ссылку, в которой говорится, что эти 2 не совместимы.

Ответы [ 4 ]

0 голосов
/ 26 августа 2019

У меня была такая же проблема, вопрос был в том, чтобы найти правильное соответствие между версией fongo и версией mongo.Раздражает наличие подобных ошибок, а также потому, что это может помочь другим в будущем:

  1. Перейти на страницу фонго в репозитории maven
  2. Выберите версию, например, 2.1.0
  3. Прокрутите вниз, пока не найдете зависимости mongo db:

enter image description here

в этомНапример, вы можете увидеть, что fongo 2.1.0 соответствует mongo 3.4.2.

0 голосов
/ 05 марта 2019

У меня есть приложение, которое работает в JDK 11 и Spring 2.1, а также использует Fongo для насмешки ответа Mongo.

Мое приложение работает нормально при приведенной ниже комбинации пакетов

Использовать com.github.fakemongo: fongo 2.2.0-RC1 (исключение обнаружено при использовании 2.2.0-RC2)

spring-boot-зависимости 2.1.x (так как Spring Boot 2.1 обеспечивает поддержку Java 11)

Вам необходимо переопределить некоторые зависимости в Spring 2.1, как показано ниже

  • spring-data-commons 2.0.8
  • spring-boot-starter-data-jpa 2.0.8
  • spring-data-jpa 2.0.8
  • spring-boot-starter-data-mongodb 2.0.8
  • spring-boot-test 2.0.8
  • spring-boot-test-autoconfigure 2.0.8
  • spring-boot-starter-test 2.0.8
  • spring-data-mongodb 2.0.13.RELEASE (одна из зависимостей вSpring 2.0.8)
  • mongodb-драйвер-ядро 3.6.4
  • mongo-java-драйвер 3.6.4
  • mongodb-драйвер 3.6.4
  • org.mongodb: bson 3.6.4

Что еще более важно, после определения вышеуказанных зависимостей в вашем pom.xml запустите «clean dependency: tree», чтобы увидеть, правильно ли модули OR вашего приложения выбирают правильные пакеты.

[INFO] +- org.springframework.boot:spring-boot-starter-data-mongodb:jar:2.0.8.RELEASE:compile
[INFO] |  +- org.mongodb:mongodb-driver:jar:3.6.4:compile
[INFO] |  |  +- org.mongodb:bson:jar:3.6.4:compile
[INFO] |  |  \- org.mongodb:mongodb-driver-core:jar:3.6.4:compile
0 голосов
/ 12 марта 2019

Прежде всего, 3.2.8 кажется очень старым, если вы используете Spring Data 2.1.X.Я бы придерживался любой версии, от которой зависит spring-data-mongodb.Даже тогда Fongo не совместим с новыми драйверами Mongo.Есть несколько открытых вопросов, связанных с этим: # 316 , # 337 , # 357

Последняя проблема, приведенная выше, ссылается на вилка из Фонго, которая может работать на вас.Или вы можете попробовать понизить драйвер монго до 3.7 и использовать fongo 2.2.0-RC1, который также предположительно работает в соответствии с той же проблемой.Однако я не уверен, будет ли это совместимо с вашей версией Spring Data.

0 голосов
/ 04 февраля 2019

Я думаю, что на данный момент лучшим решением является переход на [mongo java server] [1].

Вот так я получил тесты, работающие с последними версиями.

...