Eclipse java.lang.IllegalArgumentException:名为[X]和[Y]的servlet都映射到不允许的url模式[/url]
我试图添加这个servletEclipse java.lang.IllegalArgumentException:名为[X]和[Y]的servlet都映射到不允许的url模式[/url],eclipse,tomcat,servlets,mapping,illegalargumentexception,Eclipse,Tomcat,Servlets,Mapping,Illegalargumentexception,我试图添加这个servlet package com.classmgt.servlet; @WebServlet("/ControllerServlet") public class ControllerServlet extends HttpServlet {} 通过如下编辑web.xml,可以访问我的Eclipse项目 <servlet> <description>Servlet to print out Hello World!</descript
package com.classmgt.servlet;
@WebServlet("/ControllerServlet")
public class ControllerServlet extends HttpServlet {}
通过如下编辑web.xml
,可以访问我的Eclipse项目
<servlet>
<description>Servlet to print out Hello World!</description>
<display-name>ControllerServlet</display-name>
<servlet-name>ControllerServlet</servlet-name>
<servlet-class>com.classmgt.servlet.ControllerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControllerServlet</servlet-name>
<url-pattern>/ControllerServlet</url-pattern>
</servlet-mapping>
我尝试将metadata complete=“true”
添加到web.xml
,但它不再识别servlet
原因:java.lang.IllegalArgumentException:名为
[ControllerServlet]和[com.classmgt.servlet.ControllerServlet]是
两者都映射到url模式[/ControllerServlet],该模式不是
允许的
您似乎混合了基于@WebServlet
注释和基于web.xml
的配置
我怀疑您是否使用“创建Servlet”向导创建了Servlet,该向导使用url模式创建web.xml条目,然后添加了一个@WebServlet
注释,该注释复制了您可能在web.xml中放置的任何内容
你应该使用其中一个,而不是两个。从web.xml
中删除映射,然后只使用@WebServlet
注释
阅读更多:和
我在不同的包(name='syncro')中创建了新的servlet。我的servlet位于syncro.SynchronizeServlet中
当我在部署描述符(web.xml)中添加关于这个servlet的信息时,我发现了一个错误:IllegalArgumentException
不正确的描述符部件示例:
<servlet>
<description></description>
<display-name>SynchronizeServlet</display-name>
<servlet-name>SynchronizeServlet</servlet-name>
<servlet-class>SynchronizeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SynchronizeServlet</servlet-name>
<url-pattern>/SynchronizeServlet</url-pattern>
<url-pattern>/SynServlet</url-pattern>
</servlet-mapping>
同步伺服阀
同步伺服阀
同步伺服阀
同步伺服阀
/同步伺服阀
/SynServlet
当我为servlet添加正确的路径时,错误消失了。请更正以下描述:
<servlet>
<description></description>
<display-name>syncro.SynchronizeServlet</display-name>
<servlet-name>syncro.SynchronizeServlet</servlet-name>
<servlet-class>syncro.SynchronizeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>syncro.SynchronizeServlet</servlet-name>
<url-pattern>/SynchronizeServlet</url-pattern>
<url-pattern>/SynServlet</url-pattern>
</servlet-mapping>
syncro.SynchronizeServlet
syncro.SynchronizeServlet
syncro.SynchronizeServlet
syncro.SynchronizeServlet
/同步伺服阀
/SynServlet
==>73 只需从
ControllerServlet
中删除注释@WebServlet(“/ControllerServlet”)
,因为它已经添加到web.xml
中,对我有效的是做一个“清理”
我的问题是在重命名Servlet类时引起的。但是,原始的.class文件保留在目标目录中(带有Servlet注释)。看起来您将ControllerServlet移动到了一个包中
Jetty似乎并不介意这些明显的重复,但Tomcat7给出了您的答案
“两者都映射到url模式”异常
要想知道这是否导致了您的问题,最简单的方法是查看战争中的旧类(在您的例子中,[ControllerServlet]和[com.classmgt.servlet.ControllerServlet])是否都在那里。至于我,我将tom cat版本添加到我的pom文件中,并且成功了
<properties>
<tomcat.version>7.0.52</tomcat.version>
</properties>
<dependencies>
7.0.52
名为[Register]和[com.teamination.controller.Register]的servlet
都映射到不允许的url模式[/Register]
如果出现此错误,您必须从web.xml中删除servlet映射,只需添加@WebServlet(“/Register”)注释+url
<servlet>
<servlet-name>Register</servlet-name>
<servlet-class>com.TeamWork.controller</servlet-class>
</servlet>
它会工作的,谢谢看起来有两个servlet和相同的url模式,但是根据web.xml,只有一个,也许wront web.xml正在运行?尝试重新编译并重新启动?是否混合了基于注释的配置和基于web.xml的配置?在我的ControllerServlet中,我放了以下内容:
@WebServlet(“/ControllerServlet”)
,在我的表单中,我放了以下内容:
您好!73-在业余无线电中,意思是“祝你好运、成功、好运”,谢谢。那是一种高级的利兹峰。
<properties>
<tomcat.version>7.0.52</tomcat.version>
</properties>
<dependencies>
<servlet>
<servlet-name>Register</servlet-name>
<servlet-class>com.TeamWork.controller</servlet-class>
</servlet>
@WebServlet("/Register")`
public class Register extends HttpServlet { }