严重:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:无法启动错误

当我尝试在Tomcat中运行我的应用程序时遇到此错误。 我已经检查过tomcat和java home的版本。 两者都使用java 6。

有丢失的jar子吗? 或者是我的web 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 

得到了这个问题的解决方案….哇

  1. 确保Appliction服务器(Tomcat等)使用与您的Java应用程序所使用的相同的Java运行时版本。

  2. 确保使用jre路径而不是运行时环境的jdk路径

  3. 确保在创建项目时选择适当的服务器运行时版本。

出现这个问题的原因各不相同。 如果您使用Spring boot内置的war文件,可能会遇到。 由于Spring引导web和rest启动项目jar中确实嵌入了Tomcat,因此失败了“SEVERE:ContainerBase.addChild:start:org.apache.catalina.LifecycleException”。

您可以通过在maven的情况下使用排除项在打包时排除嵌入式tomcat来解决此问题。

“spring-boot-starter-web”的Maven依赖关系看起来像

   org.springframework.boot spring-boot-starter-web   org.springframework.boot spring-boot-starter-tomcat    

据我所知,如果有两个同名但有不同版本的违规类,就会发生这种情况。 通常,它是由于servlet-api.jar而发生的。 如果它存在于你的战争的lib文件夹中,那么请使用用于构建战争的任何工具将其删除。 或者在maven的情况下,添加指定为“提供”的范围的依赖项。 这将解决编译问题,在运行时它将引用服务器环境提供的jar。 请按以下方式配置依赖项:

  javax.servlet javax.servlet-api 3.0.1 provided  

在我的情况下导致此错误的原因是在单个资源中有两个具有相同路径的@GET方法。 改变其中一个方法的@Path为我解决了它。

主要原因:SOAPMessageContext NoClassDefFoundError所以你需要导入这个Class或jar

在IDEA

  1. ctrl + shift + alt + S ,“Libraries”,找到缺席的课程。
  2. 编辑本地Maven配置。

.m2 / repository /您的缺席类(例如commons-logging)/…/ maven-metadata-central.xml

   commons-logging commons-logging  1.2 1.2  1.0 1.0.1 1.0.2 1.0.3 1.0.4 1.1 1.1.1 1.1.2 1.1.3 1.2  20140709195742   your need absend class version and useful 

因为Maven会将’metadata-central.xml’配置最新版本作为项目使用版本。

原谅我的中文英文:)

我的问题是我有@WebServlet(“/ route”)和web.xml中声明的相同servlet

请validation.project和.classpath文件。 validationjava版本和其他需要的详细信息。 如果那些和丢失或错配

我不确定您的案例中发生了什么问题解决了问题,但您的问题是在这一行:

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

您需要将jaxrpc-api.jar添加到/lib或添加

  javax.xml jaxrpc-api xxx  

你的maven依赖。

我在“无法访问资源”错误消息后面有相同的错误声明:

命令

 #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的工作原理。 如果你处理更多的文件,这可能会很棘手。

奇怪的错误,你可以尝试james goooseling给出的方法,我也是通过以下方式完成的:

  • 从构建路径和lib文件夹中删除所有jar或库,并根据需要在lib文件夹或构建路径中再次添加它们。

  • 检查你是否有给定servlet的servlet注释@WebServlet以及它是否也在web.xml中有映射…这是最常见的错误,因为tomcat会混淆,他必须使用什么url模式。

在我的例子中,web.xml中定义的servlet名称与servlet映射标记中的sevlet名称不同。 我已经纠正了这个问题并成功部署了WAR。

我的问题是@WebServelet注释,因为名称被重复,我错误地在我的代码中有两个@WebServlet("/route") (我复制并粘贴并忘记更改路径名称)

在我的案例中(Spring MVC + Hibernate项目),我添加了Controller,Service,Dao,Model类和Thyme叶页。 只是没有在“hibernate.cfg.xml”文件中映射新的模型类。 这样就出现了这个错误。 但在映射新模型类后再次出现错误。 然后删除了Controller,Service,Dao,Model类。 百里香叶页和新创建。 还映射了新的模型类。 然后错误消失了。

除了所有其他的东西,对我来说这是发生的,因为我在setenv.sh中激活NewRelic:

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

一旦我评论这个,删除newrelic的钩子,问题就消失了。 它只发生在使用apache CXF的端点上。

使用spring boot时,问题是tomcat库需要设置为提供

  org.springframework.boot spring-boot-starter-tomcat provided