启动Tomcat WAR

3
我已在我的电脑上安装了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


1
你是否正在使用Tomcat 7和Servlet 3.0的功能,例如在servlet定义中添加URL映射,使用@WebServlet("someUrl") - Luiggi Mendoza
要启动Tomcat WAR,只需提到JBoss或WebSphere;-) - jarmod
请展示一下ReunionServlet类的一些代码。 - acdcjunior
3个回答

4

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


4
读取堆栈跟踪的前三行,它们可以很好地告诉您发生了什么:正如javadev正确回答的那样,您将两个servlet映射到相同的URL模式。其中一个显然在您的web.xml中,另一个很可能在某个注释中(正如您的堆栈跟踪的第三行所透露的那样)。
定位有问题的servlet,并更改注释或web.xml声明即可。
奇怪的是:有问题的servlet在两种情况下似乎都是相同的 - 例如,您已经在web.xml中声明了ReunionServlet的映射,并对servlet.ReunionServlet进行了注释(您的包名称似乎是"servlet" - 非常通用)。因此,您只需要删除其中一个声明,一切都应该按预期工作。

0
如果您正在使用Java EE API库,则问题可能出在那里。 尝试从项目中删除Java EE 6 API库,然后重新构建。
这对我有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接