tomcat7启动报错Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]

来源:互联网 发布:淘宝安装工接单平台app 编辑:程序博客网 时间:2024/06/13 21:42

项目报错详细信息如下,因为项目以前成功启动过,所以再次启动报错了有点奇怪(其实报错信息基本看第一行就够了,这里贴出来只是让大家看起来直观一点)

严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/ebookshop]]at java.util.concurrent.FutureTask.report(FutureTask.java:122)at java.util.concurrent.FutureTask.get(FutureTask.java:188)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)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.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:745)Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/ebookshop]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)... 6 moreCaused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:800)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)at java.net.URLClassLoader.access$100(URLClassLoader.java:71)at java.net.URLClassLoader$1.run(URLClassLoader.java:361)at java.net.URLClassLoader$1.run(URLClassLoader.java:355)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:354)at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1191)at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669)at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:167)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5423)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6 more


1、排查是否是jar包的问题

 启动的jar是否都包含在lib里


2、引入servlet依赖,并把其scope设置为provided,具体设置如下(这里给出我的配置仅供参考,具体的在pom.xml文件的对应节点下将scope设置为provided即可)

    <dependency>      <groupId>javax.servlet</groupId>      <artifactId>javax.servlet-api</artifactId>      <version>3.0.1</version>      <scope>provided</scope>    </dependency>    <!-- java ee jar 包 -->    <dependency>      <groupId>javax</groupId>      <artifactId>javaee-api</artifactId>      <version>6.0</version>      <scope>provided</scope>    </dependency>    <!-- JSP相关 -->    <dependency>      <groupId>javax.servlet</groupId>      <artifactId>jsp-api</artifactId>      <version>2.0</version>      <scope>provided</scope>    </dependency>


3、其它检查

(1)以上两点都排查了没有问题之后项目仍然启动报错,由于IDE使用的是Intell J,我又尝试了右键->maven->Reimport,仍然不行

(2)百思不得其解之后我想到了一种情况,上次为了尝试jetty,在pom.xml文件中同时配置了jetty和tomcat,很奇怪的是jetty能够启动但是tomcat无法启动,我将jetty相关的配置注释掉之后再次启动tomcat,启动正常


4、总结

写代码的时候碰到问题是很正常的事情,如果控制台有报错信息的话最好了,根据报错信息去网上找找前辈们是怎么解决的,但别人遇到的问题也不一定具有普适性,还是要结合别人的解决方法思考自己可能出错的地方,对问题进行排查并将它解决吐舌头


阅读全文
0 0