2014-01-10 129 views
20

我試圖在Tomcat中運行我的應用程序時遇到此錯誤。 我已經檢查了tomcat和java home的版本。兩者都使用java 6.SEVERE:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:無法啓動錯誤

是否有缺少的jar?或者它是我的網絡XML?我沒有使用任何Maven工具。

SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ICard]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    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:618) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650) 
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1582) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NoClassDefFoundError: javax/xml/rpc/handler/soap/SOAPMessageContext 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(Unknown Source) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2904) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
    at java.lang.Class.getDeclaredMethods(Unknown Source) 
    at org.apache.catalina.util.Introspection.getDeclaredMethods(Introspection.java:108) 
    at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:279) 
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:141) 
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67) 
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881) 
    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) 
    ... 11 more 
Caused by: java.lang.ClassNotFoundException: javax.xml.rpc.handler.soap.SOAPMessageContext 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    ... 33 more 
Jan 10, 2014 4:05:06 PM org.apache.catalina.startup.HostConfig deployDescriptor 
SEVERE: Error deploying configuration descriptor F:\RCBC\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\conf\Catalina\localhost\ICard.xml 
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ICard]] 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650) 
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1582) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Jan 10, 2014 4:05:06 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8100"] 
Jan 10, 2014 4:05:06 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Jan 10, 2014 4:05:06 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 4003 ms 

回答

12

得到了這個問題的解決方案....的Wooo

  1. 確保機應用服務器(Tomcat的等)使用相同的Java運行時版本按照你的Java應用程序使用。

  2. 確保您使用的JRE路徑運行enviroments

  3. 不是JDK路徑創建一個項目選擇合適的服務器運行時版本時,確保。

+0

「確保您使用的jre路徑不是運行時環境的jdk路徑」 是的,有罪魁禍首。謝謝你的細節,你剛剛救了我的一天。 – Amalgovinus

0

奇怪的錯誤,你可以嘗試用詹姆斯goooseling給出的方法,也是我已經通過以下方式完成它:

  • 取下構建路徑和lib文件夾的所有jar文件或庫,並再次將它們添加在lib文件夾或構建路徑,如你所願。

  • 檢查給定的servlet是否有servlet註釋@WebServlet,以及它是否具有web.xml中的映射。這是tomcat弄糊塗的最常見錯誤,他必須使用哪種url模式。

8

根據我的情況,如果有兩個同名但有不同版本的冒犯類,就會發生這種情況。通常,這是由servlet-api.jar引起的。 如果它存在於你的戰爭的lib文件夾中,那麼請使用用於建立戰爭的任何工具將其刪除。或者在maven的情況下,將該依賴項添加到指定爲「provided」的範圍。這將解決編譯問題,並且在運行時它將引用由服務器環境提供的jar。 PLS配置的依賴性如下:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
</dependency> 
0

請確認您的.project以及classpath文件。驗證java版本和其他reuqired細節。如果這些和缺失或錯誤匹配

0

我不知道你的情況是固定的問題發生了什麼,但你的問題是在這條線:

Caused by: java.lang.NoClassDefFoundError: javax/xml/rpc/handler/soap/SOAPMessageContext 

您需要添加jaxrpc-api.jar/lib小號或添加

<dependency> 
    <groupId>javax.xml</groupId> 
    <artifactId>jaxrpc-api</artifactId> 
    <version>x.x.x</version> 
</dependency> 

到您的maven依賴項。

0

我有以下相同的錯誤語句「無法訪問資源」錯誤消息:

命令

#cat callflow-java-logger-1.log.0 

輸出

Dec 09, 2015 8:09:03 AM org.apache.catalina.loader.WebappLoader startInternal 
SEVERE: LifecycleException 
java.io.IOException: Failed to access resource /WEB-INF/lib/ojdbc14.jar 

在我的案例該解決方案正在改變連接器的安全性離子

-rw------- 1 owner creator size date ojdbc14.jar 

此文件最初並不位於/ WEB-INF/lib,這可能是由於BIRT的工作原理。如果你處理更多文件,這可能會非常棘手。

11

此問題出於不同原因。如果你使用Spring引導建立的war文件,可能會遇到它。由於Spring引導Web和其他啓動項目的jar包內嵌了Tomcat,因此無法使用「SEVERE:ContainerBase.addChild:start:org.apache.catalina.LifecycleException」。

你可以在包裝時通過使用exclusions排除嵌入式tomcat來解決這個問題。的「彈簧引導起動網」

Maven的依賴會像

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
2

是什麼原因造成這個錯誤在我的情況是具有單一的資源相同的路徑中的兩個@GET方法。更改其中一個方法的@Path爲我解決了它。

0

在我的情況下,web.xml中定義的servlet名稱與servlet映射標籤中的sevlet名稱不同。我已經糾正了這一點,併成功部署了WAR。

1

的主要原因是:SOAPMessageContext的NoClassDefFoundError 所以你需要導入這個類或JAR

在IDEA

  1. CTRL + 轉變 + ALT + 小號,「庫」,找到缺席的班級。
  2. 編輯本地Maven配置。

.m2目錄/庫/您的缺席類(例如共享記錄)/.../ Maven的元數據central.xml

<?xml version="1.0" encoding="UTF-8"?> 
<metadata modelVersion="1.1.0"> 
<groupId>commons-logging</groupId> 
<artifactId>commons-logging</artifactId> 
<versioning> 
<latest>1.2</latest> 
<release>1.2</release> 
<versions> 
    <version>1.0</version> 
    <version>1.0.1</version> 
    <version>1.0.2</version> 
    <version>1.0.3</version> 
    <version>1.0.4</version> 
    <version>1.1</version> 
    <version>1.1.1</version> 
    <version>1.1.2</version> 
    <version>1.1.3</version> 
    <version>1.2</version> 
</versions> 
<lastUpdated>20140709195742</lastUpdated> 
</versioning> 
</metadata> 


<latest>your need absend class version and useful</latest> 

因爲Maven會發現「元數據central.xml '將最新版本配置爲項目使用版本。

原諒我的英語中國:)

0

我的問題是與@WebServelet註釋,這是因爲重複的名字,我在我的代碼有兩個@WebServlet("/route")錯誤(我複製並粘貼和忘了改路線名稱)

0

我的問題是,我有@WebServlet( 「/路徑」),並在web.xml中

0

在我的情況下(Spring MVC的+ Hibernate項目)宣佈同一個servlet,我加控制,服務,道,模型類&百里香葉頁。只是沒有在「hibernate.cfg.xml」文件中映射新的模型類。所以這個錯誤。 但是在映射新的模型類後又得到了錯誤。 然後刪除Controller,Service,Dao,Model類。百里香葉頁和新創建。還映射了新的模型類。然後錯誤消失了。

0

對所有其他的東西上面,對我來說這是怎麼回事,因爲我是在我的setenv.sh激活NewRelic的:

NR_JAR=/opt/newrelic/newrelic.jar; export NR_JAR 

一旦我評論這個,消除NewRelic的的掛鉤,這個問題就消失了。這隻發生在使用Apache CXF的端點上。

相關問題