You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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被加载,就会出现该错误。

解决方法

  1. 显式引入同版本的mongodb-core
    在Gradle依赖中添加:

    dependency("org.mongodb:mongodb-core:4.11.1")
    

    确保版本与mongodb-driver-sync完全一致。

  2. 排查并解决依赖冲突
    运行以下命令查看依赖树,检查是否有旧版本的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'
    }
    
  3. 清理缓存并重新构建
    清除旧的构建产物和依赖缓存,避免残留:

    ./gradlew clean build --refresh-dependencies
    
  4. 验证运行时类路径
    确认运行时类路径中只有4.11.1版本的mongodb-driver-sync和mongodb-core,无旧版本存在。

内容的提问来源于stack exchange,提问作者Smriti Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:50:34