2012-11-02 11 views
12

Eclipse kullanarak yerel makinemde birkaç servlet yazdım. Onları yerel makinemde test ettim ve her şey mükemmel çalışıyor.Tomcat sunucusunu çalıştırırken istisna org.apache.catalina.deploy.WebXml addServlet

Daha sonra projemi bir .war dosyası olarak verdikten sonra tomcat'ımın webapps dizinine, yalnızca ssh erişimine sahip olduğum başka bir makineye yükledim. Benim erkek kedi sunucusu yeniden ve günlük dosyaları baktıktan sonra bunu izleyen istisna atıyor görüyoruz: Bunun ne anlama

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) 

yok fikir?

+0

Bu başlık size yardımcı olabilir. [link] (http://stackoverflow.com/questions/6110660/porting-tomcat-6-to-7-problem-with-filter) –

+0

Bu parçayı görmüştüm ama maven kullanmıyorum ve düzenleme yapıyorum web.xml. Anlayışım için servlet3.0'a web.xml'ye gereksinim duymamalı çünkü ek açıklamalarla değiştiriliyorlar. Eğer durum buysa, neden bu hatayı alıyorum? – Roozbeh15

+0

Aynı sürümü aynı anda çalıştırıyorsanız, kontrol edin. Genellikle önemli olmamalı. Bu yüzden ve uzak makinenin sürümünü sağlayın. Lütfen web.xml snippet'inizi de gönderin. Xerces'i yığın izi üzerinde görebilirsiniz. Web.xml'de yüklenemeyen bazı sunucu var. Uzak tomcat sunucunuzu durdurun. Temp ve iş dizinlerinizi temizleyin. Tomcat, başladığında savaş dosyalarını patlatır. Dizinde aynı ada sahip dosya bulunmadığını onaylar mısınız? – randominstanceOfLivingThing

cevap

20

here numaralı çözümü buldum.

Artık web.xml'ye sahip olmanıza gerek yok. Servletinizin yollarını tanımlamak için ek açıklamaları kullanabilirsiniz. Ama problem, liberalde catalina.jar'ı dahil etmekti. Catalina.jar kaldırılıyor!

+1

Dikkatle okuyun: http://stackoverflow.com/questions/4076601/how-do-i-import-the-javax-servlet-api-in-my-eclipse-project/4076706#4076706 Eğer catalina yerleştirdiyseniz. "/ WEB-INF/lib" 'inizdeki bazı mantıksız sebeplerden dolayı (' 'herhangi bir mantıksal başlangıcın hatasını neden olarak hayal edemiyorum'), başka bazı şeyleri de yanlış yapmış olabilirsiniz. – BalusC

+0

Tüm kavanozlarımı WEB-INF/lib. Yine de, tüm kavanozları projeme ekledim, onları bu dizinde göremedim ve daha sonra sorunlara neden olabileceğini düşündüm. Yani, temelde tüm kavanozları/WEB-INF/lib'e el ile kopyalamamış ve yapıştırmam gerekti. Ama bu bağlantıya teşekkürler, yardımcı oldu. – Roozbeh15

+2

Kuşkusuz, web sunucusuna özgü JAR'lar, servlet konseye özgü JAR'lar değil. – BalusC

3

Projemde maven kullandıktan sonra bu sorunla karşılaştım. Adam'ın dediği gibi, tüm tomcat lib'lerini maven bağımlılıklarında kaldırdım ve sonra problem çözüldü.