Je suis en train de faire une simple application Spring MVC (n'utilisant pas maven) qui imprimera hello world sur un navigateur. C’est un projet dynamique dans Eclipse, j’ai donc mis tous les fichiers jar requis dans le chemin de construction ainsi que dans le dossier WEB-INF/lib
J'ai essayé deux solutions et les deux n'ont pas fonctionné.
Solutions j'ai trouvé:
Voici mon web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>Spring MVC Application</display-name>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
et il n'y a pas d'erreur de frappe dans la configuration de contextLoaderListener, alors quel est le problème, y at-il une autre solution
Jan 20, 2014 8:16:39 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 20, 2014 8:16:39 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.11
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
Java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1676)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1521)
at org.Apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.Java:415)
at org.Apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.Java:397)
at org.Apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.Java:118)
at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4618)
at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5184)
at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5179)
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)
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Context [/SpringSample] startup failed due to previous errors
Jan 20, 2014 8:16:40 PM org.Apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8081"]
Jan 20, 2014 8:16:40 PM org.Apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 8:16:40 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 4010 ms
finalement je reçois une erreur 404 car mon service n'est pas chargé
J'ai eu ce même problème dans Eclipse. Lorsque je faisais une nouvelle installation maven et que je déplaçais le fichier WAR généré dans mon dossier Tomapp Webapp, cela fonctionnait sans problème. Cependant, afin de déboguer je voulais exécuter dans Eclipse, mais cela jetterait l'erreur suivante.
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
J'ai cherché sur Google jusqu'à ce que j'ai trouvé le blog suivant.
http://commonexceptions.blogspot.com/2014/01/Java.html
Comme l'auteur l'explique:
Cette exception a été provoquée lorsque je n'ai pas ajouté les dépendances maven à le chemin de construction. J'utilisais Eclipse avec maven, je devais donc inclure le Dépendances maven dans le chemin de construction, comme expliqué ci-dessous.
Voir le post pour la solution. C’est un correctif de configuration simple pour Eclipse Deployment Assembly. Cela m'a pris environ 30 secondes et je peux maintenant déboguer ma webapp Spring dans Eclipse.
Voici les étapes pertinentes du post:
Ajout de dépendances Maven dans le déploiement Web du projet
Lorsque vous utilisez Eclipse WDT et utilisez un projet non modifié et ayant déjà travaillé:
La solution ci-dessus devrait résoudre l'exception.
Essayez de placer le fichier spring-web.jar directement dans WEB-INF/lib (WEB-INF/lib/spring-web.jar) et non dans WEB-INF/lib/spring-mvc/spring-web.jar
Si vous créez un projet simple sans maven, Devez suivre les étapes suivantes,
télécharger les fichiers JAR requis, par exemple J'utilise Spring 4, j'ai donc téléchargé les fichiers de Index of release
Ajoutez ensuite ces fichiers dans votre dossier WebContent/WEB-INF/lib.
Ajouter des fichiers jar dans le chemin de construction (Dans Eclipse: clic droit sur le projet -> Propriétés -> Chemin de construction Java -> Ajouter des JAR ...)
Cela évitera l'exception org.springframework.web.context.ContextLoaderListener.
J'ai un très bon moyen de vous aider à apprendre Spring MVC si vous avez Maven opérationnel.
SI SO: allez sur votre ligne de commande (Cygwin) que j'utilise ...
mvn archetype: generate Il vous demandera un "numéro d'archétype". Pour vous ... tapez 16 Entrez l'ID de groupe qui n'est que le paquet principal . Entrez l'ID d'artefact qui correspond au nom de votre projet . SNAP-SHOT --- appuyez simplement sur Entrée et même avec version Package - correspond au nom de votre identifiant de groupe. EX: com.spring Confirmez-le en saisissant la lettre 'y' et appuyez sur entrée . Faites tout ce qui précède une fois que vous êtes dans votre répertoire d’espace de travail. De cette façon, il est créé là . Vous pouvez faire "mvn Eclipse: eclipse" pour le charger dans Eclipse OR, vous pouvez simplement l’importer. Je préfère l'ancienne façon d'importer un projet existant.
Tout sera "déjà" configuré pour vous en termes de configuration ALL (basée sur Java), ce qui est bon pour vous. Il contiendra déjà toutes les dépendances Maven dont vous avez besoin dans votre pom.xml. Vous pouvez en ajouter ou en retirer si vous le souhaitez.
Le point ici est que vous aurez déjà un projet en cours et que vous pourrez y jouer à partir de là. Je crée tous mes projets comme celui-ci au début, j'efface ce dont je n'ai pas besoin et j'ajoute ce que je fais, puis je pars de là.
Bonne chance!!!
C'est un problème de dépendance, il manque des dépendances dans l'artefact. Ma solution dans IntelliJ:
Clic droit sur le nom du projet -> Ouvrir les paramètres du module -> Problèmes -> Ajouter les dépendances manquantes à l'artefact
Redémarrez le serveur (mon cas était Tomcat)
J'espère que ça aide