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

Eclipse Java非Maven/Gradle环境连接MongoDB失败求助

解决MongoDB Java驱动NoClassDefFoundError问题

你遇到的问题核心是依赖jar包版本冲突+组件版本不兼容,具体原因和解决方案如下:

问题根源

  1. 新旧驱动混用:你同时引入了2.x版本的mongo-java-driver-2.9.1.jar和3.x版本的mongodb-driver-3.6.1.jar,这两个版本的API和内部实现差异极大,会直接导致类加载冲突。
  2. 核心依赖版本不匹配:MongoDB 3.x驱动的三个核心组件(mongodb-driver、mongodb-driver-core、bson)必须保持版本完全一致。你用了mongodb-driver-3.6.1.jar,但搭配的是mongodb-driver-core-3.0.1.jar和bson-3.0.4.jar,版本差距太大,缺失了DBRefCodecProvider这类关键类。
  3. 冗余依赖干扰:你的代码里并没有用到jsoup-1.11.2.jar和java-json.jar,这些冗余依赖可以直接移除,避免不必要的类加载干扰。

解决方案

第一步:清理并统一依赖jar包

删除以下冲突/冗余的jar包:

  • mongo-java-driver-2.9.1.jar(旧版驱动,与3.x完全不兼容)
  • bson-3.0.4.jar(版本与driver不匹配)
  • mongodb-driver-core-3.0.1.jar(版本与driver不匹配)
  • jsoup-1.11.2.jar(未在代码中使用)
  • java-json.jar(未在代码中使用)

只保留版本统一为3.6.1的三个核心jar包:

  • mongodb-driver-3.6.1.jar
  • mongodb-driver-core-3.6.1.jar
  • bson-3.6.1.jar

第二步:修正代码(适配3.x新API)

你的代码混用了旧版的DB、DBCollection、DBObjectAPI和新版的MongoClient,3.x驱动推荐使用更简洁高效的MongoDatabase和MongoCollection<Document>API,修正后的代码如下:

import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class Main {
    public static void main(String[] args) {
        try {
            // 连接本地MongoDB实例
            MongoClient mongoClient = new MongoClient("localhost", 27017);
            
            // 获取数据库(3.x新API)
            MongoDatabase database = mongoClient.getDatabase("test");
            
            // 获取集合(3.x新API)
            MongoCollection<Document> collection = database.getCollection("myCol");
            
            // 创建文档并插入
            Document document = new Document("name", "mkyong")
                                    .append("age", 30);
            collection.insertOne(document);
            
            System.out.println("数据插入成功!");
        } catch(Exception ex) {
            System.out.println("错误信息:" + ex.getMessage());
            ex.printStackTrace(); // 打印完整堆栈,方便排查深层问题
        }
    }
}

补充说明

  • MongoDB 3.4.10和3.6.x版本的Java驱动完全兼容,不用担心版本适配问题。
  • 如果你坚持使用旧版DB类API,需要移除所有3.x驱动jar包,只保留mongo-java-driver-2.9.1.jar,但不推荐这么做——旧版API已被废弃,功能和性能都远不如新版。

内容的提问来源于stack exchange,提问作者Олга Димитровска

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:28:28