Mongock 失败:NoClassDefFoundError org/springframework/data/mongodb/MongoDatabaseFactory
Mongock failed: NoClassDefFoundError org/springframework/data/mongodb/MongoDatabaseFactory
我在 spring 启动应用程序中使用以下 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
的应用程序时,似乎一切正常
请问有人可以帮助我吗?
这是因为版本不兼容。
如您在此 compatibility table 中所见,您使用的 Mongock 版本与 spring-data 3.x 兼容,但您使用的是 2.x .
Mongock 为 spring-data 提供了两个驱动程序,mongodb-springdata-v3-driver,spring-data 3.x 和 mongodb-springdata-v2-drver for spring-data 2.2.X
我有几个建议:
- 要么升级你的 spring-data 依赖到 3.x,要么使用 mongodb-springdata-v2-drver(推荐第一个)
- 使用依赖管理,这样你就不需要为每个依赖指定版本。你可以为 spring 和 Mongock
做
有了这个你应该解决你的问题 ;)
我在 spring 启动应用程序中使用以下 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
的应用程序时,似乎一切正常
请问有人可以帮助我吗?
这是因为版本不兼容。
如您在此 compatibility table 中所见,您使用的 Mongock 版本与 spring-data 3.x 兼容,但您使用的是 2.x .
Mongock 为 spring-data 提供了两个驱动程序,mongodb-springdata-v3-driver,spring-data 3.x 和 mongodb-springdata-v2-drver for spring-data 2.2.X
我有几个建议:
- 要么升级你的 spring-data 依赖到 3.x,要么使用 mongodb-springdata-v2-drver(推荐第一个)
- 使用依赖管理,这样你就不需要为每个依赖指定版本。你可以为 spring 和 Mongock 做
有了这个你应该解决你的问题 ;)