MongoClient无法解析为某种类型

时间:2017-04-16 09:13:32

标签: java mongodb

我是MongoDB的新手,我想与我的mongod服务器建立连接。 但我收到错误MongoClient cannot be resolved to a type我已将外部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();
} 
}

}

2 个答案:

答案 0 :(得分:0)

添加:

# mongo-java-driver-3.4.2.jar 
# mongob-driver-3.4.2

到Eclipse Luna中的Web-content > WEB-INF > lib文件夹解决了我的问题。使用最新的驱动程序,列出的驱动程序是发布时的最新驱动程序。

答案 1 :(得分:0)

我认为MongoDatabase jar文件中没有mongodb-driver-3.8.0-beta3类文件。这就是为什么您无法导入它的原因。您可以使用稳定版本3.7.1 of mongo jar。 MongoDatabase类具有稳定版本。来源:mvnrepository.com/artifact/org.mongodb/mongo-java-driver/3.7.1

相关问题