最近在tomcat7上部署项目时,一启动就报错报错:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter 具体异常信息如下: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter ...... Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
解决办法为:在tomcat目录下conf下的context.xml中添加<Loader delegate="true"/> 属性。
经过查询资料显示,该属性含义如下 。
True,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。 False,表示将不遵循这个delegate机制,即WebAppClassLoader在加载类文件时,会优先自己尝试加载,如果加载失败,才会沿着继承链,依次委托父类加载。