Java Bson 库无法映射文档对象

标签 java playframework sbt mongodb-java bson

我正在使用 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.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。还要确保依赖项版本号是否正确。

关于Java Bson 库无法映射文档对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157811/

相关文章:

java - 任何时候我输入 >= 13 的值都不会显示任何内容

java - Unirest 正在缓存基本身份验证信息

scala - Scala/Play 的语法和含义!代码示例

Hadoop依赖于两个不同版本的beanutils

playframework - Activator 1.3.6 覆盖 build.sbt

java - 全局 session +身份验证,Jetty中的多个上下文

javascript - 如何在浏览器中显示word/pdf二进制数据

scala - 删除 DAO 模型中的可选字段

使用 `sbt runMain` 执行 scala 程序时出现 java.nio.file.NoSuchFileException :/home/user/java/8. 0.181-oracle/jre/lib/jfxrt.jar

java - 通过SimpleDateFormat解析系统时间报错