![](/img/trans.png)
[英]Class not found exception even if the jar is on the classpath / debugging classpath problems
[英]Class not found even when in Jar in the classpath
我正在嘗試部署一個使用 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。
有誰知道是什么原因造成的,我該如何解決?
有人請指教...
我弄清楚出了什么問題。
事實證明,當您將代碼導出到JAR文件時,我正在使用的環境(Eclipse!)無法正確更新清單文件。 沒有正確的清單條目,應用程序將無法“找到”相關的jar文件。
在我看來,這是Eclipse專家們的一個嚴重疏忽-尤其是當您有一個依賴大量jar文件的應用程序時。 為了使我的應用程序運行,我有以下選擇:
2:將每個所需的jar文件手動輸入到清單文件中
據我所知,沒有辦法自動更新清單文件。 這是嚴重的PITA(痛苦中的A **)...
無論如何,對於使這個問題困擾人們感到抱歉。 希望發布此答案將有助於其他人避免類似的問題...
我的項目中也發生了完全相同的異常,但我使用的是 sts。 但異常顯示主要 Spring Boot 應用程序類
線程“主”java.lang.NoClassDefFoundError 中的異常:org\/springframework\/core\/metrics\/Applicationstartup
在 org.spring framework.boot.SpringApplication。 (SpringApplication.java: 227) 在 org.springframework.boot.SpringApplication。 (SpringApplication.java: 240) 在 org.springframework.boot.SpringApplication.run (SpringApplication.java:1301)
在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) 在 com.testDemoproject.covidDemoassignmentsts.CovidDemoAssignmentStsApplication.main(CovidDemoAssignment StsAp
引起:java.lang.ClassNotFoundException:org.springframework.core.metrics。 ApplicationStartup 在 java.base\/jdk.internal.loader.BuiltinClassLoader.loadClass (BuiltinClassLoader.java:606)
在 java.base\/jdk.internal.loader.ClassLoaders $AppClassLoader.loadClass (ClassLoaders.java:168)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.