我正在使用 tomcat 7.0.39 的 websocket 功能,所以我必须将 catalina.jar 包含到我的类路径中。但是当我部署我的项目时,如果我将 jar 文件部署到 WEB-INF/lib 中,我会得到以下异常:
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
当 catalina.jar 未部署时,我得到 ClassNotFoundException:
java.lang.ClassNotFoundException: org.apache.catalina.websocket.MessageInbound
有人请帮助我。
堆栈跟踪:
java.lang.NoSuchMethodException:org.apache.catalina.deploy.WebXml addServlet 在 org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:802) 在 org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201) 在 org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1057) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:604) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1759) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2915) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748) 在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525) 在 org.apache.tomcat.util.digester.Digester.parse(Digester.java:1543) 在 org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1694) 在 org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1197) 在 org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:882) 在 org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:317) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5081) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:620) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:616) 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)