MongoDB Java 驱动程序:无法解析类型 com.mongodb.client.model.InsertOneOptions。它是从所需的 .class 文件中间接引用的

MongoDB Java Driver: The type com.mongodb.client.model.InsertOneOptions cannot be resolved. It is indirectly referenced from required .class files

我正在为一个小项目使用 MongoDB,但在尝试使用 MongoDB Java 驱动程序中的函数 insertOne(Document) 时出现此错误:

The type com.mongodb.client.model.InsertOneOptions cannot be resolved. It is indirectly referenced from required .class files

我按照本指南所述配置了 Java 驱动程序:https://docs.mongodb.com/getting-started/java/client/

我也试过新建项目,没用。

我用的MongoDB版本是3.2.6,我用的MongoDBJava驱动版本是3.2.2。我的 JDK 版本是 1.8.0_91。 IDE 我使用的是 Eclipse Mars 2(我不知道这是否重要)。

提前致谢。

编辑: 这是我为测试 Java 驱动程序而编写的一小段代码: http://pastebin.com/SGj0mXwh 问题出在 "addCompletedQuiz" 函数的最后一行。

我添加到项目中的唯一库是 BSON 3.0.4 库和 MongoDB Java Driver 3.2.2 库,所以我认为这不是 "JAR Hell"问题。

此外,我已经尝试重新下载并读取 Java 驱动程序,但无济于事。

根据您提供的代码,我建议您在创建 MongoClient 实例时添加服务器名称和端口,如下所示:

public Mongo() {
    String serverName = ""; //Usually it's 'localhost'
    String serverPort = ""; //Usually it's '8080'
    try {
        mongoClient = new MongoClient(serverName, serverPort);
        db = mongoClient.getDatabase("IFHKServer");
    } catch (MongoClientException e) {
        System.err.println("Error connecting to MongoDB Client.");
        Logger.getLogger(Mongo.class.getName()).log(Level.SEVERE, null, e);        }
}

此外,考虑创建一个方法,在您完成插入新文档后终止与 MongoDB 实例的连接。

public final void closeMongoDBConnection() {
    try {
        mongoClient.close();
    } catch (Exception e) {
        System.err.println("Error in terminating connection");
        Logger.getLogger(Mongo.class.getName()).log(Level.SEVERE, null, e);
    }
}

据我所知,插入代码似乎不错。

一般提示:

  • 如果您试图在 MongoDB 中插入、更新或删除文档,总是 将您的代码包围在 try-catch 块中。
  • 不要在您的 methods/class 字段中省略 public/private/protected 标识符,除非您想将您的代码仅用于您的 class/package。假设您的项目在使用 Mongo class 中的代码的其他包中包含 classes,声明一个没有修饰符的方法允许在包外使用它 class 属于.
  • 避免对随时可能更改的内容使用硬编码名称,例如集合名称或文档中的字段。您可以将所有这些值传输到外部 .properties 文件并使用 Properties class 读取它们。这样,您的代码在外部更改时将更加灵活,而无需重建实体项目。

编辑

除了BSON库,你还应该有以下三个:

  • mongodb-driver-3.0.4.jar
  • mongodb-driver-async-3.0.4.jar
  • mongodb-driver-core-3.0.4.jar