【发布时间】:2022-01-06 15:37:14
【问题描述】:
我有基于mongo server 4.2的java应用,组件版本如下
spring-boot 2.2.5.RELEASE
spring-data-mongodb2.2.5.RELEASE
mongo-java-driver3.12.1
我将 Spring Boot 更新为 2.5.8,因此对更新依赖项进行了一些更改,如下所示
spring-boot2.5.8
spring-starter-parent2.5.8
spring-data-mongodb 3.2.3
mongodb-driver-core 4.2.3
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>3.2.3</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-core</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.8</version>
</dependency>
因为我用的是新加的
**import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;**
即使用 mongo-java 驱动程序 3.12.1 的现代 API 我更新到 mongodb-driver-sync 4.2.3
我解决了所有编译错误,但在部署时出现错误,例如 getSrvHost() 找不到方法,进一步调试发现 mongo-java-driver 3.3.0 的旧依赖项> 已经存在于项目中
我排除了依赖和上述问题现在已解决,不存在旧依赖,但在不使用旧 API 方法的情况下仍然出现以下错误
java.lang.NoClassDefFoundError: com/mongodb/MongoClient
Caused by: java.lang.NoClassDefFoundError: com/mongodb/MongoClient
在驱动和spring升级过程中完全卡在这一点上,在整个项目中没有使用com.mongodb.MongoClient,它会在部署时抛出错误。
【问题讨论】:
标签: mongodb spring-boot spring-data-mongodb mongodb-java mongo-java-driver