0

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(ネイティブメソッド)
    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) で
4

2 に答える 2

1

7.0.x での Web ソケットのサポートは実験的なものです (間もなく廃止され、Tomcat 8 からの JSR 356 実装のポートに置き換えられます)。

これの副作用は、API がポイント リリース間で変更される可能性があり、実際に変更されることです。したがって、デプロイする予定の Tomcat バージョンの Tomcat JAR に対してコードを再度コンパイルする必要があります。表示されるエラーは、バージョンの不一致を示しています。

Web アプリケーションに Tomcat JAR をパッケージ化する必要はありません。

于 2013-05-05T15:09:28.197 に答える