3

我已经在我的 PC 上安装了 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 上。其内容如下

在此处输入图像描述

4

3 回答 3

4

reunionServlet 和 servlet.ReunionServlet 都映射到同一个 URL-PATTERN /ReunionServlet,这在 Servlet Container 中是被禁止的。删除其中一个声明。

于 2013-05-06T21:33:10.173 回答
4

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

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

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

于 2013-05-07T08:11:37.973 回答
0

如果你使用 java ee api 库,问题可能就在那里。尝试从项目中删除 java EE 6 api 库并重新构建。

这个对我有用

于 2018-07-01T18:55:21.560 回答