`

java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilte

阅读更多

启动Tomcat一直出错:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter

开始以为是web.xml或某种编译错误引起,尝试了多种方法都没有结果。网搜以后,解决方法是在tomacat的配置文件context.xml里加上<Loader delegate="true"/>,添加以后测试OK。

大牛的解释是:

Loader对象可出现在Context中以控制Java类的加载。属性:delegate

delegate配置的意义:

True,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。

False,表示将不遵循这个delegate机制,即WebAppClassLoader在加载类文件时,会优先自己尝试加载,如果加载失败,才会沿着继承链,依次委托父类加载。 
在此说一下配置为False需要注意的问题:一旦配置为False,就要注意多个WebApp公用jar包存放位置,你可能会放到${CATALINA_HOME}/shared目录中共享,但是一不小心在应用的/WEB-INF/lib中也包含了一个同名的但版本不一致的jar的话,这就有可能会导致很多奇怪的问题

 

印象中 以前解决过这种问题,这次为了防止再忘记,特记于此。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics