我正在尝试部署使用Jackson,JUnit和Commons-IO的应用程序。我在我的应用程序的类路径以下罐:即使在类路径中的Jar中也找不到该类
commons-io-2.4.jar
jackson-databind-2.7.0.jar
jackson-annotations-2.7.0.jar
log4j-api-2.4.1.jar
wsdiscovery-0.2.jar
jackson-core-2.7.0.jar
log4j-core-2.4.1.jar
此应用程序中我的开发环境,并且我已经部署所有上述罐的与主应用程序罐子。我可以毫无问题运行应用程序,但是每次我试图使用它,我得到以下故障:
Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
at com.oncam.hware.app.OnvifApp.formatOutput(OnvifApp.java:356)
at com.oncam.hware.app.OnvifApp.dispatchCommand(OnvifApp.java:271)
at com.oncam.hware.app.OnvifApp.loopSocket(OnvifApp.java:130)
at com.oncam.hware.app.OnvifApp.useSocket(OnvifApp.java:216)
at com.oncam.hware.app.OnvifApp.main(OnvifApp.java:473)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 5 more
的ObjectMapper类是在杰克逊数据绑定-2.7.0.jar文件。此外,在访问其他jar文件中的类(包括JUnit jar!)时,我没有任何问题。出于某种原因,就好像类加载器正在加载除jackson-databind-2.7.0.jar之外的每个Jar。
有谁知道是什么原因造成了这种情况,我该如何解决?
有人请指教...
你的类路径中必须有一个错字。你如何运行你的程序? –
使用java -verbose查看所有类从哪里加载。这些错误有时也掩盖了初始化程序中的一个错误或者另一个无法像超类一样找到的依赖项。 – Gerhard