异常(一):Failed to start component[StandardEngine[Catalina].StandardHost[localhost].StandardContext
[/Web_05]]Caused by:java.lang.IllegalArgumentException: The servlets named [HelloWorld] and
[org.etspace.abc.servlet.HelloWorld] are both mapped to the url-pattern [/HelloWorld] which is not permitted
详细信息如下:
严重: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Web_05]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
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:745)
Caused by: java.lang.IllegalArgumentException: The servlets named [HelloWorld] and [org.etspace.abc.servlet.HelloWorld] are both mapped to the url-pattern [/HelloWorld] which is not permitted
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMappingDecoded(WebXml.java:323)
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:316)
at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2389)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2066)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1952)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1946)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1946)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1946)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1946)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1153)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5087)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 10 more原因:因为我使用的servlet是用myEclipse向导创建的,里面的模板里已经包含了@WebServlet("/HelloWorld")的注解,这种注解和在.xml文件中<servlet-mapping>映射一个已注册的Servlet的对外访问路径效果是一样的。解决方法1:
<url-pattern>/Servlet_URL</url-pattern>中的/Servlet_URL和@WebServlet("/HelloWorld")的/Servlet_URL不能相同,其实在网址栏上输入不同URL可以看到相同的效果就明白是怎么回事了。
解决方法2:
去掉@WebServlet("/HelloWorld")注解 或者去掉<servlet-mapping></servlet-mapping>的内容。
本文解析了Tomcat启动时出现的异常,详细说明了当两个Servlet使用相同的URL映射时引发的问题,并提供了两种有效的解决方案。
674

被折叠的 条评论
为什么被折叠?



