之前咱们的后台服务器打的一个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的机制确实有用的