升级mongo-java-driver至mongodb-driver-sync后出现NoClassDefFoundError
MongoDB驱动升级后NoClassDefFoundError问题解决
问题情况
从org.mongodb:mongo-java-driver:3.12.14升级到org.mongodb:mongodb-driver-sync:4.11.1,已完成代码修改并解决编译错误,但运行时抛出以下错误:
Caused by: java.lang.NoClassDefFoundError: com/mongodb/internal/diagnostics/logging/Loggers at com.mongodb.client.internal.MongoClientImpl.<clinit>(MongoClientImpl.java:66) at com.mongodb.client.MongoClients.create(MongoClients.java:108) at org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.createMongoClient(MongoClientFactorySupport.java:50) at org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration.mongo(MongoAutoConfiguration.java:56) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... 212 more Caused by: java.lang.ClassNotFoundException: com.mongodb.internal.diagnostics.logging.Loggers at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ... 221 more
已更新Gradle依赖为dependency("org.mongodb:mongodb-driver-sync:4.11.1"),且运行时类路径显示对应版本,但问题仍存在。
原因
MongoDB 4.x版本驱动拆分了模块:mongodb-driver-sync不再包含核心的mongodb-core包,com.mongodb.internal.diagnostics.logging.Loggers类属于mongodb-core,若未显式引入或存在依赖冲突导致旧版本core被加载,就会出现该错误。
解决方法
显式引入同版本的mongodb-core
在Gradle依赖中添加:dependency("org.mongodb:mongodb-core:4.11.1")确保版本与
mongodb-driver-sync完全一致。排查并解决依赖冲突
运行以下命令查看依赖树,检查是否有旧版本的mongodb-core被其他依赖引入:./gradlew dependencies --configuration runtimeClasspath | grep mongodb若发现冲突,在对应的依赖中排除旧版本:
dependency("your-conflicting-dependency-group:your-conflicting-dependency-name:version") { exclude group: 'org.mongodb', module: 'mongodb-core' }清理缓存并重新构建
清除旧的构建产物和依赖缓存,避免残留:./gradlew clean build --refresh-dependencies验证运行时类路径
确认运行时类路径中只有4.11.1版本的mongodb-driver-sync和mongodb-core,无旧版本存在。
内容的提问来源于stack exchange,提问作者Smriti Sharma
相关产品推荐
相关产品推荐

