2013-07-05 13 views
16

Ich migriere meine Webanwendung von Jboss 4.2 auf Tomcat 7.
Nachdem ich den Tomcat 7 benutzt habe, stehe ich vor der folgenden Ausnahme.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) 

Ich habe versucht, die catalina.jar (nach der Lösung für die gleiche Ausnahme gegeben) von der lib um das Problem zu lösen, zu entfernen, aber es nicht funktioniert hat.

Ich bekomme keine Möglichkeit, dieses Problem zu lösen, bitte helfen Sie mir zu diesem Thema.

+0

können Sie den Code für Ihre web.xml-Datei veröffentlichen? –

Antwort

10

Ich glaube, dieser Fehler betrifft die Bereitstellung Assembly. Sie benötigen catalina.jar nicht in der Bereitstellungsassembly.

+0

Ich habe mir schon seit ein paar Tagen den Kopf gebrochen. Vielen Dank für die Antwort. –

+0

Ja, es funktioniert nach dem Entfernen von catalina.jar in Tomcat 7. – aqingsao

25

In Ihrem pom.xml , wenn Sie Abhängigkeiten wie tomcat-catalina aufgenommen haben, den Umfang setzen, wie vorgesehen

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

Der Behälter (hier tomcat) selbst einige Abhängigkeiten bietet (wie tomcat-catalina jar) wenn Sie Ihre App bereitstellen. Sie müssen sie also nicht in Ihre Anwendung aufnehmen. Aber die Gläser werden für die Zusammenstellung benötigt. Dies wird dadurch erreicht, den Umfang erreicht, wie 'vorgesehen'

-3

Es gibt eine andere Lösung ist, wenn Sie die catalina.jar tun müssen, fügen Sie

<Loader delegate="true"/> 

zu

<Context /> 

Element in %TOMCAT_HOME%/conf/context.xml

1

Für diejenigen wie mich mit diesem Problem mit Spring Boot konfrontiert, löste das Hinzufügen dieser Abhängigkeit es:

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

hinzufügen <scope>provided</scope> in pom.xml:

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