2013-07-05 14 views
16

Web uygulamamı Jboss 4.2'den tomcat 7'ye geçiriyorum.
Tomcat 7'yi kullandıktan sonra aşağıdaki özel durumla karşılaşıyorum.java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet

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(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) 
    at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1883) 
    at org.apache.catalina.startup.ContextConfig.getDefaultWebXmlFragment(ContextConfig.java:1469) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1246) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 
    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:5269) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Kaldırtmak çalıştık catalina.jar sorunu çözmek için lib dan (aynı istisnası için verilen çözüme göre) ama işe yaradı etmedi.

Bu sorunu çözmek için herhangi bir yol almıyorum, herkes bu konuda yardımcı olabilir.

+0

Eğer web.xml dosyasının kodunu gönderebilir? –

cevap

10

Bu hata, dağıtım derlemesiyle ilgili olduğuna inanıyorum. Dağıtım derlemesinde catalina.jar'a ihtiyacınız yoktur. Eğer erkek kedi-catalina gibi bağımlılıklar dahil olması halinde pom.xml yılında

+0

Birkaç günlüğüne kafamı kırıyordum. Cevabınız için çok teşekkür ederim. –

+0

Evet, tomcat 7'de catalina.jar kaldırıldıktan sonra çalışır. – aqingsao

25

, kendisi bazı bağımlılıkları sağlar

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-catalina</artifactId> 
    <version>7.0.47</version> 
    <scope>provided</scope> 
</dependency> 

konteyner (burada tomcat) sağlanan kapsamını koymak (gibi erkek kedi-catalina kavanoz) uygulamanızı dağıttığınızda. Yani bunları uygulamanıza eklemeniz gerekmez. Ama kavanozlar derleme için gereklidir. Bu catalina.jar gerekiyor başka bir çözüm yoktur

-3

, %TOMCAT_HOME%/conf/context.xml

1
yılında

<Context /> 

elemana

<Loader delegate="true"/> 

eklemek 'sağlanan' olarak kapsamını ayarlayarak elde edilir

Bu sorunun Spring Boot ile karşı karşıya gelmesi gibi, bu bağımlılığın eklenmesi, bu bağımlılığın eklenmesiyle çözümlendi:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 
-1

pom.xml <scope>provided</scope> ekleyin:

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-catalina</artifactId> 
    <version>7.0.27</version> 
    <scope>provided</scope> 
</dependency>