NoClassDefFoundError問題


問題:

遇到一個問題,報NoClassDefFoundError,如下圖:

NoClassDefFoundError和ClassNotFoundException區別

我們經常被java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError這兩個錯誤迷惑不清,盡管他們都與Java classpath有關,但是他們完全不同。NoClassDefFoundError發生在JVM在動態運行時,根據你提供的類名,在classpath中找到對應的類進行加載,但當它找不到這個類時,就發生了java.lang.NoClassDefFoundError的錯誤,而ClassNotFoundException是在編譯的時候在classpath中找不到對應的類而發生的錯誤。ClassNotFoundException比NoClassDefFoundError容易解決,是因為在編譯時我們就知道錯誤發生,並且完全是由於環境的問題導致。而如果你在J2EE的環境下工作,並且得到NoClassDefFoundError的異常,而且對應的錯誤的類是確實存在的,這說明這個類對於類加載器來說,可能是不可見的。

https://blog.csdn.net/qq_28483283/article/details/78404984

排查問題:

  1. 項目可以正常部署且基本功能正常使用,只在調用webservice這塊時報錯,這也驗證了這個錯誤發生在運行時,看了下lib目錄下jar包也存在
  2. 看了下對應的jar包,也包含那個類
  3. 本地運行這個方法不會報錯,在服務器上報錯,又聯想到發版是增量發版,依賴jar包一般不會刪除的,所以對比了一下本地和服務器上的依賴jar包,果然服務器上的jar包比本地要多十幾個,把服務器上的jar包完全替換成本地的jar包,就解決問題了。對比服務器上多出的jar包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM