【发布时间】:2016-03-16 18:31:06
【问题描述】:
我正在尝试部署一个使用 Jackson、JUnit 和 Commons-IO 的应用程序。我的应用程序的类路径中有以下罐子:
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
此应用程序在我的开发环境中运行,并且我已将上述所有 Jar 与主应用程序 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 类位于 jackson-databind-2.7.0.jar 文件中。此外,我在访问其他 jar 文件(包括 JUnit jars!)中的类时也没有问题。出于某种原因,就好像类加载器正在加载除 jackson-databind-2.7.0.jar 之外的每个 Jar。
有谁知道是什么原因造成的,我该如何解决?
请高人指教……
【问题讨论】:
-
你的类路径中一定有错字。你如何运行你的程序?
-
使用 java -verbose 查看所有类的加载位置。这些错误有时还会掩盖初始化程序中的错误或其他无法找到的依赖项,如超类。