MongoDB Java驱动程序:无法解析com.MongoDB.client.model.InsertOnOptions类型。它是从必需的.class文件间接引用的
我将MongoDB用于一个小项目,但在尝试使用MongoDB Java驱动程序中的函数insertOne(Document)时,我遇到了以下错误:MongoDB Java驱动程序:无法解析com.MongoDB.client.model.InsertOnOptions类型。它是从必需的.class文件间接引用的,java,mongodb,mongodb-java,Java,Mongodb,Mongodb Java,我将MongoDB用于一个小项目,但在尝试使用MongoDB Java驱动程序中的函数insertOne(Document)时,我遇到了以下错误: The type com.mongodb.client.model.InsertOneOptions cannot be resolved. It is indirectly referenced from required .class files 正如本指南所述,我配置了Java驱动程序: 我还试图创建一个新项目,但没有成功 我使用的Mongo
The type com.mongodb.client.model.InsertOneOptions cannot be resolved. It is indirectly referenced from required .class files
正如本指南所述,我配置了Java驱动程序:
我还试图创建一个新项目,但没有成功
我使用的MongoDB版本是3.2.6,我使用的MongoDB Java驱动程序版本是3.2.2。我的JDK版本是1.8.091。我使用的IDE是EclipseMars2(我不知道这是否重要)
提前谢谢
编辑:
这是我为测试Java驱动程序而编写的一小段代码:
问题出现在“AddCompletedQuike”函数的最后一行
我添加到项目中的唯一库是BSON 3.0.4库和MongoDB Java驱动程序3.2.2库,所以我认为这不是一个“JAR地狱”问题
此外,我已经尝试重新下载并读取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); }
}
也可以考虑在结束插入新文档时创建一个终止MunGDB实例连接的方法。
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块中
- 不要从方法/类字段中省略公共/私有/受保护的标识符,除非您希望将代码仅用于类/包。假设您的项目包括使用
类中的代码的其他包中的类,声明一个不带修饰符的方法允许在该类所属的包之外使用它Mongo
- 避免对随时可能更改的内容使用硬编码名称,例如收藏的名称或文档中的字段。您可以将所有这些值传输到外部.properties文件中,并使用。这样,您的代码在外部更改时将更加灵活,而无需重建entite项目李>
- mongodb-driver-3.0.4.jar
- mongodb-driver-async-3.0.4.jar
- mongodb-driver-core-3.0.4.jar