2013-07-05 12 views
16

Sto migrando la mia applicazione Web da Jboss 4.2 a tomcat 7.
Dopo aver utilizzato il tomcat 7, sono di fronte alla seguente eccezione.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) 

ho cercato di rimuovere il catalina.jar (secondo la soluzione proposta per la stessa eccezione) dal lib per risolvere il problema ma non ha funzionato.

Non riesco a trovare alcun modo per risolvere questo problema, per favore qualcuno può aiutare su questo problema.

+0

puoi pubblicare il codice per il file web.xml? –

risposta

10

Credo che questo errore riguardi il gruppo di distribuzione. Non è necessario il catalina.jar nell'assieme di distribuzione.

+0

Mi stavo rompendo la testa con questo per un paio di giorni. Grazie mille per la risposta. –

+0

Sì, funziona dopo aver rimosso catalina.jar in tomcat 7. – aqingsao

25

Nella tua pom.xml se hai inserito le dipendenze come il gatto-Catalina, messo il campo di applicazione, come previsto

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

Il contenitore (qui Tomcat) si fornisce alcune dipendenze (come tomcat-catalina jar) quando distribuisci la tua app. Quindi non è necessario includerli nella tua applicazione. Ma i vasi sono necessari per la compilazione. Ciò si ottiene impostando il campo di applicazione come 'condizione'

-3

C'è un'altra soluzione quando si ha bisogno il catalina.jar, aggiungere

<Loader delegate="true"/> 

a

<Context /> 

elemento %TOMCAT_HOME%/conf/context.xml

1

Per quelli come me che affrontano questo problema con Spring Boot, aggiungendo questa dipendenza risolto:

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

aggiungere <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> 
Problemi correlati