当前位置: 代码迷 >> 综合 >> NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
  详细解决方案

NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet

热度:2   发布时间:2024-02-11 18:40:53.0

在引用他人的tomcat项目初次运行时出现的错误

详细错误信息如下:

java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServletat 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:1051)at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2967)at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537)at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1879)at org.apache.catalina.startup.ContextConfig.getDefaultWebXmlFragment(ContextConfig.java:1476)at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1253)at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)[数据删除] 下午 org.apache.catalina.startup.ContextConfig parseWebXml
严重: Parse error in application web.xml file at file:[数据删除]/target/tomcat/conf/web.xml
org.xml.sax.SAXParseException; systemId: file:[数据删除]/target/tomcat/conf/web.xml; lineNumber: 108; columnNumber: 15; Error at (108, 15) : org.apache.catalina.deploy.WebXml addServletat org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2687)at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2719)at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1054)at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2967)at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537)at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1879)at org.apache.catalina.startup.ContextConfig.getDefaultWebXmlFragment(ContextConfig.java:1476)at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1253)at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServletat 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:1051)... 26 more

解决方法:

在 pom.xml 中,如果您包含了像 tomcat-catalina  tomcat7-maven-plugin  maven-compiler-plugin  这样的依赖项,请指定其依赖范围为provided

        <dependency><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><scope>provided</scope> <!----></dependency><dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><scope>provided</scope> <!----></dependency>

小知识:

1.test范围是指测试范围有效,在编译和打包时都不会使用这个依赖
2.compile范围是指编译范围内有效,在编译和打包时都会将依赖存储进去
3.provided依赖,在编译和测试过程中有效,最后生成的war包时不会加入
4.runtime在运行时候依赖,在编译时候不依赖
默认依赖范围是compile

  相关解决方案