之前咱們的後臺服務器打的一個war包,放在tomcat內運行,一直沒出錯過,
最近客戶有要求要換成resin;4.0.36,java
啓動的時候沒報錯,奇葩的是,有幾個交易一直爆web
org.springframework.web.util.NestedServletException: Handler
spring
processing failed; nested exception is java.lang.NoClassDefFoundError: org/jaxen/JaxenException
,擦從沒見過,檢查日誌,一直是在一個引用dom4j的代碼的部分報錯,Document doc = null;tomcat
這句應該也不會爆粗啊,包也有 的啊,
服務器
一直百度,所有是項目內沒jaxen的包,但是我一直grep,確實是有的啊,dom
各類百度,終於找到一個相似的了,jvm
,我記得jar的加載機制先加載容器的jar,而後加載項目的jar,.net
爲了驗證猜想,確實發現resin的lib下有dom4j,可是dom4j依賴jaxen的jar在項目內,日誌
因此就把項目內的jaxen拷貝到dom4j同一個目錄內,果真不報錯,看來了解jvm的機制確實有用的