【问题标题】:java.lang.IllegalArgumentException: The servlets named [X] and [Y] are both mapped to the url-pattern [/url] which is not permitted [duplicate]java.lang.IllegalArgumentException:名为 [X] 和 [Y] 的 servlet 都映射到不允许的 url 模式 [/url] [重复]
【发布时间】:2016-03-07 04:15:20
【问题描述】:

我不知道发生了什么,我只是在 eclipse 中编写我的东西,现在服务器无法启动。有任何想法吗?我尝试删除目录中的快照,但没有运气。我不知道该怎么办请帮助我有一个项目稍后到期,我还没有完成。我试过谷歌搜索相信我。 :(

Caused by: java.lang.IllegalArgumentException: The servlets named [servlets.AddServlet] and [servlets.AddSubjectDetailsServlet] are both mapped to the url-pattern [/AddSubjectDetailsServlet] which is not permitted
    at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:308)
    at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2342)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2024)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1918)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1913)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1139)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:771)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5066)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 6 more

【问题讨论】:

  • 打开 powershell 并输入此命令Get-Process,如果您看到任何名为“Tomcat”的进程,请记下 pid。然后使用taskkill /pid pid#
  • 请问什么是powershell
  • 这是windows提供的类似nix的shell
  • 哦。我现在在看,没有tomcat :(
  • 好的,这排除了另一个冲突的实例嗯。发布您的网络 xml

标签: eclipse tomcat servlets mapping illegalargumentexception


【解决方案1】:

问题出在您的应用程序上,更准确地说是在您的web.xml 文件中。如果您搜索以下字符串:

/AddSubjectDetailsServlet

你会发现它出现了两次。这就是 Tomcat 所抱怨的:

名为 [servlets.AddServlet] 的 servlet 和 [servlets.AddSubjectDetailsS​​ervlet] 都映射到 url 模式 [] 不允许的

基本上,您将两个 servlet 映射到同一个 URL,因此 Tomcat 没有机会正确路由请求。您需要将其中一个更改为其他内容。

【讨论】:

  • 我遇到了类似的问题。但在我的情况下,双重性并不直接存在于我的文件中,而是来自我所依赖的一个 jar。然后我做了一个 grep --include=* -r "servlet name" 。在 webapps 目录下,发现有两个 jars 使用了 servlet 名称。我删除了其中一个,这解决了问题。
  • 我不得不替换 web.xml 中的 MyServlet 名称。我将“2”添加为 MyServet2。我还需要从我的所有 jsp 文件中将名称更改为 MyServlet2。出于某种原因,当我确实将 MyServlet 移动到另一个文件夹时,eclipse 仍然认为它仍然属于那里。
猜你喜欢
  • 2013-04-22
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 2016-04-28
  • 2019-12-14
  • 2016-11-26
相关资源
最近更新 更多