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

634828354發表於2018-03-15
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter  
    at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:855)  
    at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)  
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1063)  
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)  
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement (XMLDocumentFragmentScannerImpl.java:1742)  
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $FragmentContentDriver.next (XMLDocumentFragmentScannerImpl.java:2900)  
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next (XMLDocumentScannerImpl.java:607)  
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument (XMLDocumentFragmentScannerImpl.java:489)  
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)  
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)  
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)  
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)  
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)  
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561)  
    at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1809)  
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1247)  
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:873)  
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:371)  
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)  
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)  
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)  
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)  
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)  
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)  
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1229)  
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)  
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)  
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)  
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
    at java.lang.Thread.run(Thread.java:722)  
六月 12, 2014 7:22:06 下午 org.apache.catalina.startup.ContextConfig parseWebXml  
SEVERE: Parse error in application web.xml file at jndi:/localhost/carManager/WEB-INF/web.xml  
org.xml.sax.SAXParseException; systemId: jndi:/localhost/carManager/WEB-INF/web.xml; lineNumber: 33; columnNumber: 11; Error at (33, 11) : org.apache.catalina.deploy.WebXml addFilter  
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2711)  
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2743)  
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1066)  
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)  
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement (XMLDocumentFragmentScannerImpl.java:1742)  
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2900)  
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next (XMLDocumentScannerImpl.java:607)  
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument (XMLDocumentFragmentScannerImpl.java:489)  
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)  
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)  
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)  
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)  
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)  
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561)  
    at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1809)  
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1247)  
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:873)  
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:371)  
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)  
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)  
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)  
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)  
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)  
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)  
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1229)  
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)  
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)  
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)  
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
    at java.lang.Thread.run(Thread.java:722)  
Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter  
    at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:855)  
    at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)  
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1063)  
    ... 30 more  
六月 12, 2014 7:22:06 下午 org.apache.catalina.startup.ContextConfig parseWebXml  
SEVERE: Occurred at line 33 column 11  
六月 12, 2014 7:22:06 下午 org.apache.catalina.startup.ContextConfig configureStart  
SEVERE: Marking this application unavailable due to previous error(s)  
六月 12, 2014 7:22:06 下午 org.apache.catalina.core.StandardContext startInternal  
SEVERE: Error getConfigured  
六月 12, 2014 7:22:06 下午 org.apache.catalina.core.StandardContext startInternal  
SEVERE: Context [/carManager] startup failed due to previous errors  


解決辦法:
在tomacat的配置檔案context.xml里加上<Loader delegate="true"/>

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的話,這就有可能會導致很多奇怪的問題

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30046312/viewspace-2151900/,如需轉載,請註明出處,否則將追究法律責任。