關於java.lang.NoClassDefFoundError處理(我遇到的坑could not initialize class xmlreaders)

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

 

此文章只針對將項目發佈到tomcat下 運行時遇到的問題(其他問題可能不管用)

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

發生這個異常的原因猜測: 這裏以maven項目爲例(因爲我的項目是maven項目)

1初始化xmlreaders類時候報錯

1、首先應該去檢查一下在maven dependence下面檢查是否引入了jdom.jar(至於版本我就先不說了),如果已經引入進來排除因爲沒有jar導致的錯誤(如果這一步錯了編譯時無法通過的)

2、將maven項目發佈到tomcat下面,然後檢查WEB-INF/lib下面的jar是否包含jdom 如果沒有,那麼錯誤的原因在於此jar沒有部署成功,網上說了很多在Deployment Assembly中add這個包,不建議這樣做,這隻能暫時把這個包加進去,建議去找部署失敗的原因。

3、如果WEB-INF/lib下面有jdom.jar包,那就將jar解壓,打開查看是否有xmlreaders.class。

4、如果以上三個問題都不是,去試試是不是缺少了依賴包

5、我解決的辦法:以上都不是我的問題,我的jdom是2.0.2版本的,換成了1.0版本的就可以了,可能是高版本的包本身存在問題。

 

個人看法:對於新手來說,這類錯誤一般是未將所需加載文件驅動放入web-int下所咋成;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章