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.

134voto

asuka Points 335

Si vous utilisez maven pour gérer les dépendances, ajoutez la ligne suivante dans votre pom.xml :

<dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
</dependency>

124voto

Manikandan Points 521

J'ai également rencontré les mêmes problèmes, pour les résoudre, téléchargez les fichiers jar à partir de l'url ci-dessous.

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

et copier dans votre dossier lib, résoudra votre problème.

2 votes

Cela ne fonctionne pas pour moi, même après avoir ajouté le jar commons mentionné ci-dessus dans le classpath.

2 votes

Ni l'un ni l'autre pour moi. Ces libéraux sont brisés. C'est tellement frustrant.

42voto

sonida Points 1578

Il vous suffit de télécharger commons-logging-1.1.2.jar et ensuite copier ce fichier dans libs

enfin, ça marche.

21voto

Commons-logging-1.1.1.jar ou jcl-over-slf4j-1.7.6.jar al

Si vous utilisez maven, utilisez le code ci-dessous.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>

2 votes

Inclure "jcl-over-slf4j" est la seule solution qui fonctionne pour moi. J'avais déjà le commons-logging dans mes dépendances.

0 votes

J'utilise spring-boot version 2.0.1.RELEASE avec maven. C'est la seule solution qui a fonctionné pour moi aussi.

18voto

stacky Points 151

J'ai eu le même problème, et je l'ai résolu en ajoutant simplement l'élément commons-logging.jar au chemin de la classe.

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