Вызывается: java.lang.NoSuchMethodError: org.springframework.data.mongodb.core.MongoTemplate. <init>(Lcom / mongodb / Mongo; Ljava / lang / String;) V - PullRequest
0 голосов
/ 03 декабря 2018

При попытке запустить приложение Spring-boot (v2.1.0) появляется ошибка ниже:

Описание:

Была сделана попытка вызвать метод org.springframework.data.mongodb.core.MongoTemplate. (Lcom / mongodb / Mongo; Ljava / lang / String;) V, но его не существует.Его класс org.springframework.data.mongodb.core.MongoTemplate доступен в следующих местах:

файл: / C: /Users/npatil/.m2/repository/org/springframework/data/spring-data-mongodb / 2.1.2.RELEASE / spring-data-mongodb-2.1.2.RELEASE.jar! /org/springframework/data/mongodb/core/MongoTemplate.class

Загружен изследующее местоположение:

файл: / C: /Users/npatil/.m2/repository/org/springframework/data/spring-data-mongodb/2.1.2.RELEASE/spring-data-mongodb-2.1.2.RELEASE.jar

Действие:

Исправьте путь к классу вашего приложения, чтобы оно содержало одну совместимую версию org.springframework.data.mongodb.core.MongoTemplate

Ниже приведен фрагмент кода из моего письма:

<dependencies>
.
.
  <dependency>
    <groupId>com.github.mongobee</groupId>
    <artifactId>mongobee</artifactId>
    <version>0.13</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>2.1.2.RELEASE</version>
  </dependency>
.
.
</dependencies>

Версия некоторых банок, которые могут помочь:
spring-data-mongodb: 2.1.2.RELEASE
spring-web:5.1.2.RELEASE
mongo-java-driver: 3.8.2.RELEASE

Удалил .m2 и сделал mvn clean install, но даже это не решило проблему.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вам нужно изменить Mongobee на Mongock , если вы используете Springboot 2. Синтаксис почти такой же, потому что проект Mongock является продолжением проекта Mongobee.

Springboot:

@Bean
public SpringBootMongock mongock(ApplicationContext springContext, MongoClient mongoClient) {
  return (SpringBootMongock) new SpringBootMongockBuilder(mongoClient, "yourDbName", "com.package.to.be.scanned.for.changesets")
      .setApplicationContext(springContext) 
      .setLockQuickConfig()
      .build();
}

Spring:

@Bean
public SpringMongock mongock() {
  MongoClient mongoclient = new MongoClient(new MongoClientURI("yourDbName", yourMongoClientBuilder));
  return new SpringMongockBuilder(mongoclient, "yourDbName", "com.package.to.be.scanned.for.changesets")
      .setLockQuickConfig()
      .build();
}
0 голосов
/ 11 декабря 2018

Похоже, что jar поврежден или отсутствует, проверьте, что все jar, относящиеся к пружине, версии 4.x или выше, если это работает, тогда:
Mongobee зависит от jar Spring 4.x, что может конфликтовать с Spring boot 2.x

попробуйте следующий способ

  @Bean
  public Mongobee mongobee(){
    Mongobee mongobee = new Mongobee("mongodb://localhost:27017/seed");
    mongobee.setChangeLogsScanPackage(InitialData.class.getPackageName());
            mongobee.setMongoTemplate(template);

    return mongobee;
  }
...