2016-12-01 664 views
0

當我從intelliJ執行mycode Idea時,它工作正常,但是當我在我的服務器上運行jar時,它會拋出下面的錯誤。我正在使用'org.mongodb:mongodb-driver:3.4.1'版本。MongoDB與Java異常在線程「main」java.lang.NoClassDefFoundError:org/bson/conversions/Bson

Exception in thread "main" java.lang.NoClassDefFoundError: org/bson/conversions/Bson 
     at com.myapp.server.mongo.MongoDbHandler.prepareMongoDb(MongoDbHandler.java:68) 
     at com.myapp.server.mongo.MongoDbHandler.<init>(MongoDbHandler.java:22) 
     at com.myapp.server.Client.main(Client.java:167) 
Caused by: java.lang.ClassNotFoundException: org.bson.conversions.Bson 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 3 more 
+0

請問您能否添加更多信息? 您是指Web服務器,應用程序服務器還是您的mongo服務器? 你正在使用什麼Java版本?這是一個maven構建? 服務器上的Java版本與您的intelliJ Idea相同嗎? – dirbacke

+0

最有可能的依賴性問題。 發佈「pom.xml」或「build.gradle」或「ivy.xml」的一部分或者定義依賴關係的位置是合理的。 –

+0

我正在使用build.gradle與服務器Java 1.8版本和intellij 1.7 Java版本 – Swapnil

回答

0

如果我不得不猜測你需要弄清楚你使用的任何BSON庫;我不會說蒙戈是你的問題。這裏

重點線是: 「:拋出java.lang.ClassNotFoundException:致org.bson.conversions.Bson」

所以它說,它沒有發現特定的類,我想看看在的IntelliJ看看它是什麼BSON庫,然後把它放在你的服務器上的build目錄(或java lib)中。

+0

我以前用不同版本的bson庫試過這個解決方案,但我得到相同的結果。我已經將我的mongo庫從2.10.0更新到3.4.0,然後我面臨這個問題 – Swapnil

+0

你不應該改變版本,這可能是一個不在你/ java認爲它應該是的目錄中的情況。檢查最簡單的方法是將它放在與jar相同的目錄中,然後導入<在此處插入bson庫的文件名>(例如,import bson3.2.1;排除文件擴展名),以便查看它是否是路徑問題。 – Hans

+0

但從2.10.0版本幾個方法都被棄用,所以我更新了最新版本3.4.0 – Swapnil

0

我知道它的一箇舊線程,它只適用於那些有類似問題的人。幾天後,我也面臨着同樣的錯誤跟蹤同一個問題,同時通過命令line.After重新檢查代碼運行的jar發現

It was not a problem of the jar version but its problem of the packaging of the jar

與所有適當的依賴包裝罐後,將解決這個問題。

我用

maven-assembly-plugin

包裝及其作品。

相關問題