J'essaie de configurer une application Web sur Eclipse. J'utilise Tomcat 6.0 et jdk 1.6.0_23. Pour une raison quelconque, j'obtiens cette erreur:
SEVERE: Erreur de configuration du port d'écoute de la classe org.springframework.web.util.Log4jConfigListener Java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener . Apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.Java:1645) À l'org.Apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.Java:1491) À l'org. catalina.core.StandardContext.listenerStart (StandardContext.Java:4078) à org.Apache.catalina.core.StandardContext.start (StandardContext.Java:4630) à l'orgAApache.catalina. core.ContainerBase.start (ContainerBase.Java:1045) à org.Apache.catalina.core.StandardHost.start (StandardHost.Java:785) à org.Apache.catalina.core. ContainerBase.start (ContainerBase.Java:1045) À l'adresse org.Apache.catalina.core.StandardEngine.start (StandardEngine.Java:445) à l'adresse org.Apache.catalina.core.StandardService. start (StandardService.Java:519) à org.Apache.c atalina.core.StandardServer.start (StandardServer.Java:710) à org.Apache.catalina.startup.Catalina.start (Catalina.Java:581) à Sun.reflect.NativeMethodAccessorImpl. invoke0 (Méthode native) à Sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.Java:39) à Sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.Java:25.). à Java.lang.reflect.Method.invoke (Method.Java:597) à org.Apache.catalina.startup.Bootstrap.start (Bootstrap.Java:289) à org.Apache .catalina.startup.Bootstrap.main (Bootstrap.Java:414) 24 janv. 2011 11:44:08 org.Apache.catalina.core.StandardContext listenerStart SEVERE: Erreur de configuration de l'application programme d'écoute de la classe org.springframework.web.context.ContextLoaderListener Java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener à l'org.Apache.catalina.loader.WebappClass WebappClassLoader.Java:1645) à org.Apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.Java:1491) à org.Apache.catalina.core.StandardContext.listenerStart (StandardContext.Java:4078) à .org. .Apache.catalina.core.StandardContext.start (StandardContext.Java:4630) À l'org.Apache.catalina.core.ContainerBase.start (ContainerBase.Java:1045) À l'org.Apache .catalina.core.StandardHost.start (StandardHost.Java:785) dans org.Apache.catalina.core.ContainerBase.start (ContainerBase.Java:1045) dans org.Apache.catalina .core.StandardEngine.start (StandardEngine.Java:445) dans org.Apache.catalina.core.StandardService.start (StandardService.Java:519) dans org.Apache.catalina.core .StandardServer.start (StandardServer.Java:710) À org.Apache.catalina.startup.Catalina.start (Catalina.Java:581) À Sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Méthode) À Sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.Java:39) À Sun .reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.Java:25) à Java.lang.reflect.Method.invoke (Method.Java:597) à l'organisation.Apache.catalina.startup.Bootstrap .start (Bootstrap.Java:289) à l'org.Apache.catalina.startup.Bootstrap.main (Bootstrap.Java:414)
J'ai vérifié si toutes les bibliothèques avaient été ajoutées au chemin de compilation et que tout semblait correct. log4j-1.2.15.jar est inclus, ainsi que toutes les bibliothèques Spring nécessaires.
Je suis très confus quant au problème, en particulier parce que le projet fonctionnait bien sur un autre ordinateur. Toute aide concernant ce problème sera hautement appréciée.
Naftal
La classe org.springframework.web.util.Log4jConfigListener n'est définitivement pas dans votre chemin d'accès aux classes.
La première chose que je suggérerais est que vous augmentiez le niveau de journalisation dans Tomcat - dans le dossier conf - vers "ALL" ou "DEBUG" afin que vous puissiez voir exactement ce qui se passe dans le conteneur qui empêche cette classe d'être trouvé.
Deuxièmement, je vous recommanderais de rechercher dans le fichier de classe manquant le fichier de classe manquant dans vos fichiers JAR en exécutant grep, si vous utilisez linux/mac:
# run at the root of your lib folders:
grep -ri "org.springframework.web.util.Log4jConfigListener" *
La commande ci-dessus renverra tous les fichiers JAR contenant ce package. Une fois le fichier JAR isolé, vous pouvez résoudre le problème.
Troisièmement, assurez-vous de ne pas avoir de conflits. Plusieurs versions de Log4j se trouvant dans votre chemin de classe vont faire des ravages. Comment le système est-il censé savoir quel package de org/org.springframework.web.util.Log4jConfigListener à charger s’il y en a 2? Tomcat a 3 dossiers de classpath différents:
shared/lib
lib
webapps/yourapp/WEB-INF/lib
Assurez-vous de n’avoir qu’un fichier JAR log4j dans un seul de ces dossiers.
La deuxième suggestion de Reticulogic est correcte. Toutefois, dans Eclipse Helios, l'option "Dépendances du module Java EE" a été supprimée. La solution pour Helios est la suivante:
Si vous utilisez maven et Eclipse
1) Regardez dans votre fichier .classpath de projet Web. Si vous avez une entrée de chemin de classe "org.maven.ide.Eclipse.MAVEN2_CLASSPATH_CONTAINER", assurez-vous que l'attribut est également présent.
<classpathentry kind="con" path="org.maven.ide.Eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.Eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
2) Si cela ne fonctionne pas, cliquez-droit sur votre projet Web dans Eclipse et sélectionnez Propriétés -> Dépendances du module JavaEE. Assurez-vous que la case Dépendances Maven est cochée.
Puis sauvegardez, construisez déployez yada yada
Une solution simple consiste à nettoyer le répertoire Tomcat dans Eclipse. Cela a fonctionné pour moi.
Si vous utilisez log4j2, vous pouvez trouver ces classes dans
org.Apache.logging.log4j.web.*
paquet.