2012-11-02 26 views
12

私はeclipseを使用してローカルマシンにいくつかのサーブレットを作成しました。私は私のローカルマシン上でそれらをテストし、すべてが正常に動作します。Tomcatサーバーorg.apache.catalina.deploy.WebXmlを実行しているときの例外addServlet

次に、私のプロジェクトを.warファイルとしてエクスポートし、それを私のTomcatのwebappsディレクトリの下に、私がsshアクセスしかない別のマシンに配置しました。私は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) 

は考えて?

+0

このスレッドはあなたを助けることができます。 [リンク](http://stackoverflow.com/questions/6110660/porting-tomcat-6-to-7-problem-with-filter) –

+0

私はそのスレッドを見ましたが、私はMavenも編集も使用していませんweb.xml。私の理解によれば、servlet3.0にweb.xmlは必要ないはずです。なぜなら、それらが注釈に置き換えられているからです。その場合、なぜこのエラーが発生していますか? – Roozbeh15

+0

両方の場所で同じバージョンを実行しているかどうかを確認してください。通常それは重要ではありません。それであなたのマシンとリモートマシンのバージョンを提供してください。 web.xmlスニペットも投稿してください。スタックトレース全体でXercesを見ることができます。 web.xmlにロードできないサーブレットがあります。リモートTomcatサーバーを停止します。一時ディレクトリと作業ディレクトリをクリーンアップします。 Tomcatは起動後にwarファイルを爆発させます。同じ名前のディレクトリにファイルがないことを確認できますか? – randominstanceOfLivingThing

答えて

20

解決策が見つかりましたhere

私の場合と同じように、web.xmlはもう必要ありません。注釈を使用してサーブレットのパスを定義するだけで済みます。しかし問題は、問題を引き起こしていたlibにcatalina.jarを含めることでした。 catalina.jarを削除して固定しました!

+1

これを注意深く読んでください:http://stackoverflow.com/questions/4076601/how-do-i-import-the-javax-servlet-api-in-my-eclipse-project/4076706#4076706 'catalinaを置いた場合。あなたの/ WEB-INF/lib'ファイルに 'jar'を入れてください。これは何らかの合理的な初心者のミスを原因として想像することはできません。 – BalusC

+0

私はすべての瓶を/ WEB-INF/libの下に置いておくべきだということをオンラインで読んでいました。私は自分のプロジェクトにすべてのjarファイルを追加したにもかかわらず、そのディレクトリ内にjarファイルを見ることができず、後で問題を引き起こす可能性があると考えました。ですから、基本的にすべてのjarファイルをコピーして/ WEB-INF/libに手動で貼り付けました。しかし、そのリンクに感謝、助けた。 – Roozbeh15

+2

Webアプリケーション固有のJARを意味し、サーブレットコンテナ固有のJARを意味するのは間違いありません。 – BalusC

3

プロジェクトにmavenを使用した後、この問題が発生しました。 Adamが言ったように、私はMavenの依存関係にあるすべてのTomcatライブラリを削除し、問題は修正されました。

関連する問題