我正在嘗試部署使用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