java.lang.IllegalArgumentException: Les servlets nommé [X] et [Y] sont mappés à l'url-pattern [/url] qui n'est pas autorisé
J'ai essayé d'ajouter cette servlet
package com.classmgt.servlet;
@WebServlet("/ControllerServlet")
public class ControllerServlet extends HttpServlet {}
à mon projet Eclipse, en modifiant le web.xml
comme ci-dessous
<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>
Cependant, j'ai eu l'exception suivante:
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ClassManagementSystem]]
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.runWorker(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[/ClassManagementSystem]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 7 more
Caused by: java.lang.IllegalArgumentException: The servlets named [ControllerServlet] and [com.classmgt.servlet.ControllerServlet] are both mapped to the url-pattern [/ControllerServlet] 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.processAnnotationsFile(ContextConfig.java:2093)
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)
... 7 more
J'ai essayé d'ajouter metadata-complete="true"
à web.xml
, mais il ne reconnaît pas la servlet plus.
Regarde comme il y a deux servlets et la même url-pattern mais en fonction de votre web.xml il y a un seul, peut-être wront web.xml est en cours d'exécution? Essayez de recompiler et de redémarrer?
Avez-vous mix annotation et fondés sur le web.configuration xml?
à l'intérieur de mon ControllerServlet j'ai mis ceci:
Avez-vous mix annotation et fondés sur le web.configuration xml?
à l'intérieur de mon ControllerServlet j'ai mis ceci:
@WebServlet("/ControllerServlet")
et à ma forme c'est ce que j'ai mis: <form action="ControllerServlet" method="POST">
OriginalL'auteur John | 2013-04-29
Vous devez vous connecter pour publier un commentaire.
Il semble que vous avez mélangé
@WebServlet
annotation de base etweb.xml
en fonction de la configuration.Je doute que vous avez créé une Servlet à l'aide de la "Création de la Servlet" assistant qui crée web.xml entrée avec url-pattern et puis , ajouté un
@WebServlet
annotation qui copie tout ce qui pourrait vous mettre dans l'web.xml.Vous devez utiliser l'un ou l'autre, pas les deux. Supprimer le mappage de
web.xml
et aller de l'avant avec l'aide seulement de la@WebServlet
annotation.Lire la suite: Servlet 3.0 Annotations et nos Servlets page wiki.
OriginalL'auteur
Il suffit de supprimer l'annotation
@WebServlet("/ControllerServlet")
, à partir de laControllerServlet
, parce qu'il a déjà ajouté dans leweb.xml
.OriginalL'auteur
Je l'ai récupéré cette cause à laquelle je vais créer de nouveaux servlet dans différents package (nom='syncro'). Ma servlet situé dans syncro.SynchronizeServlet
Et quand j'ai ajouter des informations à propos de cette servlet dans le descripteur de déploiement (web.xml) j'ai des captures d'erreur: IllegalArgumentException
Exemple de mauvais descripteur de la partie:
Quand j'ai ajouter le chemin d'accès correct pour servlet - erreur a disparu. Corriger desc ci-dessous:
==> 73!
Bonjour! 73 - amateur radio signifie "avec mes meilleurs vœux, de réussite, de chance"
Merci. C'est un type avancé de leetspeak.
Ok! Votre accueil!
OriginalL'auteur
Ce qui a fonctionné pour moi est de faire un "propre".
Mon problème a été causé quand la classe de Servlet a été renommé. Toutefois, l'original .les fichiers de classe sont restés dans le répertoire cible (avec leur Servlet annotation). On dirait vous avez déplacé votre ControllerServlet dans un package.
Jetée ne semblent pas à l'esprit ces apparentes doublons, mais Tomcat7 donné votre
"les deux mappé à l'url-pattern' exception.
Le moyen le plus facile pour voir si cela est la cause de votre problème est à chercher dans la GUERRE pour voir si les deux anciennes classes (dans votre cas [ControllerServlet] et [com.classmgt.servlet.ControllerServlet]) sont à la fois là.
OriginalL'auteur
Quant à moi, j'ai ajouté le tom-cat version de mon fichier pom et il a travaillé
OriginalL'auteur