【发布时间】:2017-04-18 05:18:00
【问题描述】:
我目前正在为学校开发一个动态 Web 项目,但遇到了一个奇怪的问题……我正在尝试从 .jsp 文件运行 servlet。我做了很多研究,显然(如果我错了,请纠正我!)如果你想在 .jsp 文件中使用它们,你需要将编译的 servlet 或 java 类文件放入 WEB-INF/classes 目录中。
在将构建路径设置为此目录甚至创建目录之前,我能够运行我的网络应用程序。第二次我对构建路径进行了更改,我的服务器拒绝启动,我现在收到此错误:
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/PullUp]]
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:915)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
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: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/PullUp]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
... 6 more
Caused by: java.lang.IllegalArgumentException: The servlets named [ListingServlet] and [com.pullup.ListingServlet] are both mapped to the url-pattern [/ListingServlet] which is not permitted
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMappingDecoded(WebXml.java:316)
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:309)
at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2384)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2066)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1951)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1945)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1945)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1156)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:783)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:307)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5213)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
... 6 more
有人对如何解决这个问题有任何想法吗?任何帮助将不胜感激!
【问题讨论】:
-
您是否有一个
web.xml文件定义了一个名为ListingServlet的 servlet 以及一个名为com.pullup.ListingServlet的类并带有@WebServlet注释? -
两者都同意。
-
注解是
web.xml的替代品。您对它进行了双重定义,这就是错误告诉您的内容。不要两者都做。