Java 无法将MongoClient解析为类型
我是MongoDB的新手,我想与我的mongod服务器建立连接。 但是我得到了一个错误,Java 无法将MongoClient解析为类型,java,mongodb,Java,Mongodb,我是MongoDB的新手,我想与我的mongod服务器建立连接。 但是我得到了一个错误,MongoClient无法解析为类型,我已经将外部Jar包含到我的项目中,但仍然无法修复该错误 这是我的代码,我认为我的代码中没有错误,但我在我的项目中包含了错误的JAR文件 import com.mongodb.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public
MongoClient无法解析为类型
,我已经将外部Jar包含到我的项目中,但仍然无法修复该错误
这是我的代码,我认为我的代码中没有错误,但我在我的项目中包含了错误的JAR文件
import com.mongodb.*;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Dining {
public static void main(String[] args) {
Lock forks[] = new ReentrantLock[5];
try {
MongoClient mongoClient = new MongoClient("mongo");
System.out.println("Connection to mongodb successful.");
DB db = mongoClient.getDB( "mydb" );
System.out.println("Database 'mydb' created.");
DBCollection coll = db.createCollection("mycol", null);
System.out.println("Collection 'mycol' created.");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i = 0; i<5; i++){
forks[i] = new ReentrantLock();
}
Thread p1 = new Thread(new Philosopher(forks[4], forks[0], "first"));
Thread p2 = new Thread(new Philosopher(forks[0], forks[1], "second"));
Thread p3 = new Thread(new Philosopher(forks[1], forks[2], "third"));
Thread p4 = new Thread(new Philosopher(forks[2], forks[3], "fourth"));
Thread p5 = new Thread(new Philosopher(forks[3], forks[4], "fifth"));
p1.start();
p2.start();
p3.start();
p4.start();
p5.start();
}
}
class Philosopher implements Runnable {
Lock leftFork = new ReentrantLock();
Lock rightFork = new ReentrantLock();
String name;
public Philosopher(Lock leftFork, Lock rightFork, String name) {
this.leftFork = leftFork;
this.rightFork = rightFork;
this.name = name;
}
@Override
public void run() {
try {
think(name);
eat(leftFork, rightFork, name);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void eat(Lock leftFork, Lock rightFork, String name) throws Exception{
leftFork.lock();
rightFork.lock();
try
{
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB( "mydb" );
DBCollection coll = db.getCollection("mycol");
System.out.println(name + " eating...");
BasicDBObject doc1 = new BasicDBObject(name , " eating...");
coll.insert(doc1);
Thread.sleep(1000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
System.out.println(name + " done eating and now thinking...");
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB( "mydb" );
DBCollection coll = db.getCollection("mycol");
BasicDBObject doc2 = new BasicDBObject(name , " done eating and now thinking...");
coll.insert(doc2);
leftFork.unlock();
rightFork.unlock();
}
}
public void think(String name) throws Exception{
try
{
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB( "mydb" );
DBCollection coll = db.getCollection("mycol");
System.out.println(name + " thinking...");
BasicDBObject doc = new BasicDBObject(name , " thinking...");
coll.insert(doc);
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
导入com.mongodb.*;
导入java.util.concurrent.locks.Lock;
导入java.util.concurrent.locks.ReentrantLock;
公务舱用餐{
公共静态void main(字符串[]args){
锁叉[]=新的可重入锁[5];
试一试{
MongoClient MongoClient=新的MongoClient(“mongo”);
System.out.println(“与mongodb的连接成功”);
DB=mongoClient.getDB(“mydb”);
System.out.println(“创建了数据库‘mydb’”);
DBCollection coll=db.createCollection(“mycl”,null);
System.out.println(“创建了集合“mycol”);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
对于(int i=0;i相加:
# mongo-java-driver-3.4.2.jar
# mongob-driver-3.4.2
到Eclipse Luna中我的Web content>Web-INF>lib
文件夹解决了我的问题。使用可用的最新驱动程序,列出的是发布此文件时的最新驱动程序。我认为MongoDatabase
类文件在mongodb-driver-3.8.0-beta3
jar文件中不可用。这就是您无法导入它的原因。您可以使用mongo jar的稳定版本3.7.1
。MongoDatabase类在稳定版本中可用。来源:您使用的是哪个依赖项管理器?我发现我使用了错误的依赖项我们必须使用mongo-java-driver-2.10.1依赖项。感谢您的建议干杯,投票会很好@Akshay NaikCan您解释w为什么添加此选项可以解决问题?这有助于其他人从你的答案中学习,而不是在不理解原因的情况下复制答案。