2013-07-05 34 views
16

Tôi đang di chuyển ứng dụng web của mình từ Jboss 4.2 sang tomcat 7.
Sau khi sử dụng tomcat 7 tôi đang đối mặt với ngoại lệ sau.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) 

Tôi đã cố gắng để loại bỏ các catalina.jar (theo giải pháp đưa ra cho cùng một ngoại lệ) từ lib để giải quyết vấn đề này nhưng nó không làm việc.

Tôi không nhận được bất kỳ cách nào để giải quyết vấn đề này, bất kỳ ai cũng có thể giúp bạn về vấn đề này.

+0

bạn có thể gửi mã cho file web.xml của bạn? –

Trả lời

10

Tôi tin rằng, lỗi này là về hội đồng triển khai. Bạn không cần catalina.jar trong hội đồng triển khai.

+0

Tôi đã phá vỡ đầu của tôi với điều này trong một vài ngày nay. Cảm ơn bạn rất nhiều cho câu trả lời. –

+0

Có, nó hoạt động sau khi loại bỏ catalina.jar trong tomcat 7. – aqingsao

25

Trong pom.xml của bạn nếu bạn đã bao gồm phụ thuộc như tomcat-catalina, đặt phạm vi theo quy

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

Vùng chứa (đây tomcat) tự cung cấp một số phụ thuộc (như tomcat-catalina jar) khi bạn triển khai ứng dụng của mình. Vì vậy, bạn không cần phải bao gồm chúng trong ứng dụng của bạn. Nhưng các lọ là cần thiết để biên dịch. Điều này đạt được bằng cách thiết lập các phạm vi như 'cung cấp'

-3

Có một giải pháp khi bạn làm cần catalina.jar, thêm

<Loader delegate="true"/> 

để

<Context /> 

phần tử trong %TOMCAT_HOME%/conf/context.xml

1

Đối với những người như tôi phải đối mặt với vấn đề này với Khởi động mùa xuân, thêm sự phụ thuộc này đã giải quyết vấn đề này:

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

thêm <scope>provided</scope> vào pom.xml:

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