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

JDBC连接本地MongoDB报ClassNotFoundException如何解决

问题:JDBC连接本地MongoDB失败

问题表现

  • 连接时抛出异常:java.lang.ClassNotFoundException: mongodb.jdbc.MongoDriver
  • 异常触发场景:执行驱动加载代码时抛出
  • 已尝试排查手段:分别注释单个/同时注释两个MongoDB相关依赖、确认依赖为最新版本、检索公开解决方案,均未解决问题。

现有配置

Maven依赖

<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver-sync</artifactId>
        <version>4.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-jdbc</artifactId>
        <version>2.0.0</version>
    </dependency>
</dependencies>

业务代码

public static void main(String[] args)
{       
    try
    {
        // 账号corpus,密码the+password
       Class.forName("com.mongodb.jdbc.MongoDriver");

        Connection connection = DriverManager.getConnection(
                "jdbc:mongo://localhost:27017/corpus_test",
                "corpus", "the+password");

    }
    catch (SQLException e)
    {
        System.out.println(e.getMessage());
    }
    catch (ClassNotFoundException e)
    {
        throw new RuntimeException(e);
    }
 
}
修复方案

按以下步骤逐一排查修复即可:

  • 清理旧编译产物:你贴出的代码里加载的驱动类是com.mongodb.jdbc.MongoDriver,但报错提示找不到mongodb.jdbc.MongoDriver,说明运行的是历史编译的旧字节码,先执行项目mvn clean命令清空target目录,重新编译后再运行,避免旧代码残留。
  • 修正JDBC连接URL:MongoDB官方JDBC驱动的URL前缀为jdbc:mongodb://,你当前写的jdbc:mongo://是错误前缀,修改后的连接URL为jdbc:mongodb://localhost:27017/corpus_test;如果你的corpus账号是创建在admin库下,需要追加认证源参数:jdbc:mongodb://localhost:27017/corpus_test?authSource=admin
  • 修复依赖版本不兼容问题:mongodb-jdbc 2.0.0版本要求依赖mongodb-driver-sync版本不低于4.7.0,你当前引入的4.6.0版本存在兼容性问题,将mongodb-driver-sync的版本升级到4.7.0及以上即可,不需要删除或注释任何一个依赖,Maven会自动处理依赖传递。
  • 移除冗余的驱动加载代码:JDBC 4.0及以上版本已经支持通过SPI机制自动注册驱动,不需要手动编写Class.forName("com.mongodb.jdbc.MongoDriver")加载驱动,这行代码可以直接删除,避免后续类名写错触发类找不到异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:33:21