調(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ò)代碼如下:
開始懷疑有人移動(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ò)信息如下:
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)行第二次初始化了。