2017-04-16 169 views
0

我是MongoDB的新手,我想與我的mongod服務器建立連接。 但我得到MongoClient cannot be resolved to a type我已經包含外部JAR到我的項目,但仍無法修復錯誤MongoClient無法解析爲類型

在這裏的錯誤是我的代碼,我認爲這是我的代碼沒有錯誤,但我已經在我的項目包括錯誤的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(); 
} 
} 

} 
+0

您正在使用哪個依賴項管理器? –

+0

我想通了,我用錯了依賴關係,我們必須使用mongo-java-driver-2.10.1依賴關係。感謝您的建議 –

+0

乾杯,投票將會很好@Akshay Naik –

回答

0

添加:

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

在Eclipse月神我Web-content > WEB-INF > lib文件夾解決我的問題。使用最新的驅動程序,列出的最新驅動程序發佈時。

+3

你能解釋爲什麼加入這個問題解決了這個問題嗎?這有助於他人從你的答案中學習,而不是僅僅在不明白原因的情況下複製它。 – yanman1234