解決一個少見的錯誤java.lang.NoClassDefFoundError

之前咱們的後臺服務器打的一個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

http://blog.itpub.net/22414008/viewspace-630917/?935eda9814828b3fff0dc207ce6d86a4=fcee9ea6a2ff42ce7f46e3a2ea851b18
spa

,我記得jar的加載機制先加載容器的jar,而後加載項目的jar,.net

爲了驗證猜想,確實發現resin的lib下有dom4j,可是dom4j依賴jaxen的jar在項目內,日誌

因此就把項目內的jaxen拷貝到dom4j同一個目錄內,果真不報錯,看來了解jvm的機制確實有用的

相關文章
相關標籤/搜索