Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse IllegalArgumentException:名为[HelloWorlds]和[Hello]的servlet都映射到不允许的url模式[/sHelloWorld]_Eclipse_Tomcat_Servlets_Mapping - Fatal编程技术网

Eclipse IllegalArgumentException:名为[HelloWorlds]和[Hello]的servlet都映射到不允许的url模式[/sHelloWorld]

Eclipse IllegalArgumentException:名为[HelloWorlds]和[Hello]的servlet都映射到不允许的url模式[/sHelloWorld],eclipse,tomcat,servlets,mapping,Eclipse,Tomcat,Servlets,Mapping,当我从eclipse启动tomcat时,出现以下错误 Sep 14, 2013 4:18:03 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.p

当我从eclipse启动tomcat时,出现以下错误

Sep 14, 2013 4:18:03 PM org.apache.catalina.core.AprLifecycleListener init
    INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.6.0\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.6.0/bin/client;C:/Program Files/Java/jre1.6.0/bin;C:/Program Files/Java/jre1.6.0/lib/i386;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\eclipse;
    Sep 14, 2013 4:18:03 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
    WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:TestProject' did not find a matching property.
    Sep 14, 2013 4:18:03 PM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["http-bio-8080"]
    Sep 14, 2013 4:18:03 PM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
    Sep 14, 2013 4:18:03 PM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 420 ms
    Sep 14, 2013 4:18:03 PM org.apache.catalina.core.StandardService startInternal
    INFO: Starting service Catalina
    Sep 14, 2013 4:18:03 PM org.apache.catalina.core.StandardEngine startInternal
    INFO: Starting Servlet Engine: Apache Tomcat/7.0.42
    Sep 14, 2013 4:18:03 PM org.apache.catalina.core.ContainerBase startInternal
    SEVERE: A child container failed during start
    java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TestProject]]
        at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
        at java.util.concurrent.FutureTask.get(Unknown Source)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TestProject]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        ... 7 more
    Caused by: java.lang.IllegalArgumentException: The servlets named [HelloWorlds] and [Hello] are both mapped to the url-pattern [/sHelloWorld] which is not permitted
        at org.apache.catalina.deploy.WebXml.addServletMapping(WebXml.java:335)
        at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2450)
        at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2132)
        at org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:2055)
        at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1962)
        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:376)
        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:5322)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 7 more
    Sep 14, 2013 4:18:03 PM org.apache.catalina.core.ContainerBase startInternal
    SEVERE: A child container failed during start
    java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
        at java.util.concurrent.FutureTask.get(Unknown Source)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:691)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
    Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 7 more
    Sep 14, 2013 4:18:03 PM org.apache.catalina.startup.Catalina start
    SEVERE: The required Server component failed to start so Tomcat is unable to start.
    org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:691)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 7 more
    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 9 more
    Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 11 more
    Sep 14, 2013 4:18:03 PM org.apache.coyote.AbstractProtocol pause
    INFO: Pausing ProtocolHandler ["http-bio-8080"]
    Sep 14, 2013 4:18:03 PM org.apache.coyote.AbstractProtocol pause
    INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
    Sep 14, 2013 4:18:03 PM org.apache.catalina.core.StandardService stopInternal
    INFO: Stopping service Catalina
    Sep 14, 2013 4:18:03 PM org.apache.coyote.AbstractProtocol destroy
    INFO: Destroying ProtocolHandler ["http-bio-8080"]s
    Sep 14, 2013 4:18:03 PM org.apache.coyote.AbstractProtocol destroy
    INFO: Destroying ProtocolHandler ["ajp-bio-8009"]

原因可能是注释和声明性配置的混合。请看一看

这是apache tomcat servlet conainer的
7.0.42版本的一个新的
功能

我刚刚用下面的web.xml做了一个测试

  <servlet>
    <description></description>
    <display-name>Servlet_01</display-name>
    <servlet-name>Servlet_01</servlet-name>
    <servlet-class>so.servlets.Servlet_01</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet_01</servlet-name>
    <url-pattern>/Servlet_01</url-pattern>
  </servlet-mapping>

  <servlet>
    <description></description>
    <display-name>Servlet_02</display-name>
    <servlet-name>Servlet_02</servlet-name>
    <servlet-class>so.servlets.Servlet_02</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet_02</servlet-name>
    <url-pattern>/Servlet_01</url-pattern>
  </servlet-mapping>
使用早期版本(即
7.0.32
)进行的相同测试在上下文的开头没有导致任何错误

显然,您有两个servlet
helloworld
Hello
都映射到同一个url
/sHelloWorld
。您粘贴在评论中的
web.xml
很可能不是正确的

版本
7.0.32
的效果是,所有打算转到
Servlet\u 01
的请求实际上都会转到
Servlet\u 02
。所以我想说,现在tomcat在上下文中发现这样一个错误的映射时抛出一个错误是件好事

即使将具有两个不同名称的同一servlet映射到同一url模式,也会发生此错误


要解决您的问题,请首先找到正确的web.xml并对其进行编辑,以便每个servlet都有一个不同的url映射。

您是否看到此错误
名为[HelloWorlds]和[Hello]的servlet都映射到不允许的url模式[/sHelloWorld]
?HelloWorlds Hello HelloWorlds/sHelloWorld url映射不应影响tomcatcheck的启动:当我从命令提示符启动服务器时,它给出以下信息:使用CATALINA_BASE:“C:\apache tomcat”使用CATALINA_HOME:“C:\apache tomcat”使用CATALINA_TMPDIR:“C:\apache tomcat\temp”使用JRE_HOME:“C:\ProgramFiles\Java\jdk1.6.0\”使用类路径:“C:\ApacheTomcat\bin\bootstrap.jar;C:\apache tomcat\bin\tomcat-juli.jar“C:\apache tomcat\bin>谢谢,这是非常有帮助的。但有一件事我想确认servlet名称和类名应该是相同的。bcoz当我对servlet名称和类名使用相同的名称时,它会工作,当我给servlet名称不同时,它会给出相同的错误。@HimanshuKhurana,不客气!但是请注意,
servlet名称
不需要与
servlet类
相同,第一个名称只是一个逻辑名称,它有助于以更简单的方式引用servlet,例如在配置url映射时。第二个必须是servlet类的完全限定名,即
,您没有选择它的余地。在我的示例中,web.xml
so.servlets.Servlet\u 01
是包
so.servlets.
中包含的Servlet类
Servlet\u 01
的完全限定名。
The servlets named [Servlet_01] and [Servlet_02] are both mapped to the url-pattern [/Servlet_01] which is not permitted