2016-12-01 64 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

包装及其作品。

相关问题