【问题标题】:Java Bson Library Fails to Map Document ObjectJava Bson 库无法映射文档对象
【发布时间】:2016-05-11 12:20:44
【问题描述】:

我正在使用 mongodriver 在 Java 上运行一些聚合方法,但是 bson 库无法映射 Document 实例,尽管我不确定它是否真的是原因。

我收到的错误:

java.lang.NoClassDefFoundError: org/bson/Document
        at services.ApplianceServiceImpl.aggregate(ApplianceServiceImpl.java:361)
        at controllers.AdminController.aggregate(AdminController.java:394)

SBT 文件中的 BSON 和 Mongodriver 声明:

libraryDependencies ++= Seq(
  "org.mongodb.morphia" % "morphia" % "0.108",
  "org.mongodb.morphia" % "morphia-logging-slf4j" % "0.108",
  "org.mongodb.morphia" % "morphia-validation" % "0.108",
  "org.mongodb" % "bson" % "3.0.4",
  "org.mongodb" % "mongodb-driver" % "3.0.4",

Java 代码:

public PaginationWrapper aggregate(FormRequest formData){
    List r = new ArrayList();
    int c=0;
    try{
        List l = asList(new Document("$group", new Document("_id", formData.field).append("count", new Document("$sum", 1))));
        Iterator i = db.getCollection(formData.collection).aggregate(l).results().iterator();

        while(i.hasNext()){
            r.add(i.next());
            c++;
        }
    }catch (Error e){
        e.printStackTrace();
    }

    return new PaginationWrapper(c, r);
}

代码在以 'List l = asList(new ...'

开头的行失败

你认为我做错了什么?

【问题讨论】:

    标签: java playframework sbt mongodb-java bson


    【解决方案1】:

    运行时抛出此异常java.lang.NoClassDefFoundError,因为它没有在您的类路径中找到org.bson.Document 类的定义。换句话说,org.bson.Document 不存在。 Playframework 添加了在lib/ 目录中找到的所有jar(我在MyPlayApplication\target\universal\stage\lib 下找到了我的)。请尝试以下操作:

    1. 检查是否可以找到bson-3.x.x.jar
    2. 如果没有找到,说明sbt文件配置错误。
    3. 尝试在build.sbt 中添加resolvers += Resolver.mavenLocal。还要确保依赖版本号是否正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 2011-07-12
      • 2021-09-03
      • 1970-01-01
      相关资源
      最近更新 更多