启动Tomcat WAR

时间:2013-05-06 21:29:20

标签: java tomcat servlets

我已经在我的电脑上安装了Tomcat服务器。

我在Eclipse中创建了一组servlet,并以WAR格式导出

当我部署到服务器并让它启动时,我收到以下错误:

FALLO - No se pudo arrancar la aplicación en trayectoria de contexto /Middleware
FALLO - Encontrada excepción org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Middleware]]

如果我转到Tomcat日志文件以获取更多详细信息,请参阅以下内容:

Caused by: java.lang.IllegalArgumentException: The servlets named [reunionServlet] and [servlet.ReunionServlet] are both mapped to the url-pattern [/ReunionServlet] which is not permitted
at org.apache.catalina.deploy.WebXml.addServletMapping(WebXml.java:335)
at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2457)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2139)
at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2100)
at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2093)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1300)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
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:5269)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

有什么问题?

不知道问题是否与文件web.xml有关。其内容如下

enter image description here

3 个答案:

答案 0 :(得分:4)

reunionServlet和servlet.ReunionServlet都映射到Servlet容器中禁止的相同URL-PATTERN / ReunionServlet。 删除其中一个声明。

答案 1 :(得分:3)

阅读堆栈跟踪的前三行,它们会很好地告诉您发生了什么:正如javadev已正确回答,您将两个servlet映射到相同的URL模式。其中一个显然在你的web.xml中,另一个很可能在一些注释中(因为你的堆栈跟踪的第三行会丢弃)。

找到有问题的servlet并更改注释或web.xml声明,你会没事的。

有趣的是:在两种情况下,违规的servlet似乎都是相同的 - 例如你已经在web.xml中声明了ReunionServlet的映射和带注释的servlet.ReunionServlet(你的包名似乎是“servlet” - 非常通用)。所以你基本上只需要删除两个声明中的一个,一切都应该按预期工作。

答案 2 :(得分:0)

如果确实使用java ee api库,则可能存在问题。 尝试从proyect中删除Java EE 6 api库,然后重新构建。

对我有用