0

我在我的 Spring Boot 应用程序中使用以下 pom:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.13.RELEASE</version>
    <relativePath /><!-- resolve parent from repository, refer to http://www.tomitribe.com/blog/2016/06/i-do-not-hate-apache-maven/ -->
  </parent>

<dependencies>
        <dependency>
            <groupId>com.github.cloudyrock.mongock</groupId>
            <artifactId>mongock-bom</artifactId>
            <version>4.3.8</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>com.github.cloudyrock.mongock</groupId>
            <artifactId>mongock-spring-v5</artifactId>
            <version>4.3.8</version>
        </dependency>
        <dependency>
            <groupId>com.github.cloudyrock.mongock</groupId>
            <artifactId>mongodb-springdata-v3-driver</artifactId>
            <version>4.3.8</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-sync</artifactId>
            <version>4.2.2</version>
         </dependency>
         <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>2.2.12.RELEASE</version>
</dependency>
</dependencies>

当我运行应用程序时,java -jar my-app.jar出现以下错误:

NoClassDefFoundError org/springframework/data/mongodb/MongoDatabaseFactory

但是当我用-noverify它运行应用程序时似乎一切正常

拜托,有人可以帮我吗?

4

1 回答 1

1

那是由于版本不兼容。

正如您在此兼容性表中看到的,您使用的 Mongock 版本与 spring-data 3.x 兼容,但您使用的是 2.x。

Mongock 为 spring-data 提供了两个驱动程序,mongodb-springdata-v3-driver 用于 spring-data 3.x 和 mongodb-springdata-v2-drver 用于 spring-data 2.2.X

我有几个建议:

  1. 要么将你的 spring-data 依赖升级到 3.x,要么使用 mongodb-springdata-v2-drver(推荐第一个)
  2. 使用依赖管理,因此您不需要为每个依赖指定版本。你可以为春天和Mongock 做

有了它,你应该解决你的问题;)

于 2021-04-28T16:59:04.873 回答