java.lang.NoClassDefFoundError問題

調(diào)整框架依賴后進(jìn)行回歸測(cè)試,報(bào)出一個(gè)bug。點(diǎn)擊功能按鈕時(shí),拋出異常:
Could not initialize class com.hletong.service.cdm.insurance.service.freight.types.ApprovalRequest.是在創(chuàng)建對(duì)象時(shí)報(bào)的錯(cuò),報(bào)錯(cuò)代碼如下:


clipboard.png

開始懷疑有人移動(dòng)了ApprovalRequest類的目錄,導(dǎo)致找不到該類。后來(lái)查看代碼目錄,結(jié)構(gòu)沒被人動(dòng)過(guò)。點(diǎn)擊進(jìn)該對(duì)象。該對(duì)象存在靜態(tài)變量,懷疑是在第一次初始化時(shí),加載靜態(tài)變量的過(guò)程中發(fā)生了報(bào)錯(cuò),重啟項(xiàng)目,再次點(diǎn)擊功能按鈕,報(bào)錯(cuò)信息如下:


clipboard.png

axis的jar包中的logFactory使用到org/apache/commons/discovery包中的DiscoverSingleton類,discovery包在調(diào)整框架時(shí),被移除。導(dǎo)致在運(yùn)行時(shí)報(bào)錯(cuò)。

有意思的是只有第一次的時(shí)候會(huì)報(bào):
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton

第二次以后就報(bào):
Could not initialize class com.hletong.service.cdm.insurance.service.freight.types.ApprovalRequest

原因是類加載時(shí)靜態(tài)變量只會(huì)在第一次加載時(shí),進(jìn)行初始化,此后不管成不成功,都不會(huì)進(jìn)行第二次初始化了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,837評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,739評(píng)論 18 399
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風(fēng)情閱讀 1,716評(píng)論 0 3
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,925評(píng)論 6 342
  • 1、運(yùn)行環(huán)境 主機(jī)IP 主機(jī)名 2、配置主機(jī)名(分別在五臺(tái)機(jī)器上執(zhí)行) hostname +主機(jī)名例如: h...
    獻(xiàn)給記性不好的自己閱讀 3,581評(píng)論 0 6