Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行Tomcat服务器org.apache.catalina.deploy.WebXml addServlet时出现异常_Java_Tomcat_Servlets - Fatal编程技术网

Java 运行Tomcat服务器org.apache.catalina.deploy.WebXml addServlet时出现异常

Java 运行Tomcat服务器org.apache.catalina.deploy.WebXml addServlet时出现异常,java,tomcat,servlets,Java,Tomcat,Servlets,我已经使用eclipse在本地机器上编写了几个servlet。我已经在本地机器上测试过了,一切都很好 然后,我将我的项目导出为.war文件,并将其放在另一台我只有ssh访问权限的机器中tomcat的webapps目录下。我重新启动了tomcat服务器,在查看日志文件后,我发现它引发了以下异常: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet at org.apache.tomcat.uti

我已经使用eclipse在本地机器上编写了几个servlet。我已经在本地机器上测试过了,一切都很好

然后,我将我的项目导出为.war文件,并将其放在另一台我只有ssh访问权限的机器中tomcat的webapps目录下。我重新启动了tomcat服务器,在查看日志文件后,我发现它引发了以下异常:

java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
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:1051)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:604)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1759)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2915)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748)
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:1208)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537)
at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1875)
at org.apache.catalina.startup.ContextConfig.getDefaultWebXmlFragment(ContextConfig.java:1472)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1250)
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:5173)
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:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:968)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1646)
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:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)
不知道这意味着什么

我找到了解决办法


我是对的,因为你不再需要web.xml了。您可以简单地使用注释来定义servlet的路径。但问题是我在lib中包含了catalina.jar,这导致了问题。移除catalina.jar可以解决问题

我在项目中使用maven后遇到了这个问题。正如Adam所说,我删除了maven依赖项中的所有tomcat lib,然后修复了问题。

此线程可以帮助您。我已经看到了这个线程,但我没有使用maven,也没有编辑web.xml。据我所知,我不应该在servlet3.0中需要web.xml,因为它们被注释所取代。如果是这种情况,为什么会出现此错误?请检查您在这两个位置运行的版本是否相同。通常这不重要。因此,请提供您和远程计算机的版本。请同时发布您的web.xml代码片段。您可以在堆栈跟踪中看到Xerce。web.xml中存在无法加载的servlet。停止远程tomcat服务器。清理临时目录和工作目录。Tomcat一旦启动就会爆炸war文件。您能否确认目录中没有同名文件。请仔细阅读:如果您出于某种不明显的原因(我无法想象任何合理的原因)将
catalina.jar
放在
/WEB-INF/lib
中,我在网上读到,我应该把我所有的罐子放在/WEB-INF/lib下。尽管我已将所有JAR添加到我的项目中,但在该目录中看不到它们,我认为这可能会在以后引起问题。因此,我基本上是手动将所有jar复制并粘贴到/WEB-INF/lib中,这是我不应该做的。但是,感谢这个链接,它起到了帮助作用。它无疑意味着特定于webapp的jar,而不是特定于servletcontainer的jar。如果maven依赖项将一些Tomcat或其他servlet容器的jar添加到您的项目中(您不知道),也可能发生这种情况。我就是这样。