205 votes

Obtention de l'exception java.lang.ClassNotFoundException : exception org.apache.commons.logging.LogFactory

J'exécute un simple programme d'injection de dépendances de Spring et je reçois cette exception. J'ai déjà inclus le fichier common-logging1.1.1.jar et spring.jar. Pouvez-vous m'aider ?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:119)
    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:55)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:56)
    at com.client.StoryReader.main(StoryReader.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 6 more

2 votes

Tout d'abord, vérifiez que votre classpath est bien correct. Ensuite, essayez d'ouvrir le jar et vérifiez qu'il contient bien la classe org.apache.commons.logging.LogFactory. Enfin, essayez de déboguer en plaçant un point d'arrêt dans le chargeur de classe.

2 votes

Toutes les réponses ci-dessous suggèrent commons-logging est un pas en arrière. Utilisez jcl-over-slf4j à la place.

0 votes

Sous Android, ajoutez testCompile 'commons-logging:commons-logging:1.1.1' à app.gradle.

6voto

Jesper Points 65733

J'ai déjà inclus common-logging1.1.1.jar et ...

Êtes-vous sûr d'avoir bien épelé le nom du fichier JAR ? Je pense qu'il devrait probablement être common-logging-1.1.1.jar (notez le supplément - dans le nom). Vérifiez également si le nom du répertoire est correct.

NoClassDefFoundError signifie toujours qu'une classe est introuvable. Il est donc fort probable que le chemin d'accès à votre classe ne soit pas correct.

2 votes

NoClassDefFoundError peut également être causé par d'autres cas de figure, comme lorsque les initialisateurs de classe échouent dans des circonstances obscures.

0 votes

De plus, s'il obtient une NoClassDefFoundError parce que l'instanciation de la classe a échoué, il aurait dû obtenir une exception ExceptionInitializerError en premier lieu (à moins, bien sûr, qu'elle ait été attrapée silencieusement).

0 votes

Et n'oubliez pas le "s" commons-logging-1.1.1.jar

5voto

emills Points 461

Essayez de faire un nettoyage complet du répertoire cible/déploiement de l'application pour vous débarrasser de tout jar de bibliothèque périmé. Effectuez une nouvelle construction et vérifiez que commons-logging.jar est bien placé dans le bon dossier lib. Il se peut qu'il ne soit pas inclus lorsque vous construisez la bibliothèque de l'application.

4voto

Tushar Points 51

Problème résolu en ajoutant commons-logging.jar

Les fichiers Imp sont ,

antlr-runtime-3.0.1

org.springframework.aop-3.1.0.M2

org.springframework.asm-3.1.0.M2

org.springframework.aspects-3.1.0.M2

org.springframework.beans-3.1.0.M2

org.springframework.context.support-3.1.0.M2

org.springframework.context-3.1.0.M2

org.springframework.core-3.1.0.M2

org.springframework.expression-3.1.0.M2

commons-logging-1.1.1

1voto

1Z1 Points 71

Essayez d'inclure :

  • axis.jar
  • axis-jaxrpc.jar
  • common-logging.jar
  • saas.jar
  • javax-wsdl.jar
  • Élément de liste

dans votre dossier WEB-INF/lib.

J'ai essayé, ça marche.

1voto

rash Points 21

http://commons.apache.org/logging/download_logging.cgi

utilisez cette url pour télécharger les fichiers jar et incluez-les dans le chemin de vos classes, le problème sera résolu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X