Tomcat启动失败,提示Server Tomcat v7.0 Server at localhost failed to start
对于小白的我来说初学JavaWEB,遇到了很多的问题就比如Tomcat启动失败,提示Server Tomcat v7.0 Server at localhost failed to start这个问题,让我苦恼了一下午,于是自己就去百度上寻找解决方法,可谓是老鼠打洞—自找门道。
运行tomcat失败,出现如图提示
运行web.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!--配置和映射Servlet -->
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>hello</url-pattern> <!-- 错误的配置因为缺少“/” -->
</servlet-mapping>
</web-app>
控制台输出的错误原因:
A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Demo_Servlet]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1243)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:829)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1707)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1697)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Demo_Servlet]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
... 6 more
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> hello in servlet mapping
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3511)
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3486)
at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1452)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1300)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5606)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
... 6 more
......
......
......
解决办法:
检查web.xml中的servlet映射里面的,看中配置的内容是否缺少“/” ,"/"表示当前web应用。这个问题也可能是由过滤器引起的。
对于web.xml中的url-pattern标签想要进一步地理解可以观看大佬的“servlet的url-pattern匹配规则”的文章