86 votes

java.lang.NoClassDefFoundError : org.slf4j.LoggerFactory

J'obtiens l'erreur mentionnée ci-dessous lors de l'exécution de l'utilitaire d'alimentation. J'essaie de charger une image " logo.png ". Les slf4j est également disponible dans le chemin de classe de l'exécution. Mais j'obtiens toujours cette erreur.

Oct 16, 2012 7:34:11 PM com.ibm.commerce.foundation.dataload.FeedRetriever  invokeDataLoad
SEVERE: An error occurred while performing data load.
Throwable occurred: com.ibm.commerce.foundation.dataload.exception.DataLoadException: 
An error occurred while executing the data load. 

java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

    at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:664)
    at com.ibm.commerce.content.commands.DataLoadInvoker.execute(DataLoadInvoker.java:101)
    at com.ibm.commerce.foundation.dataload.FeedRetriever.invokeDataLoad(FeedRetriever.java:244)
    at com.ibm.commerce.foundation.dataload.FeedRetriever.execute(FeedRetriever.java:172)
    at com.ibm.commerce.foundation.dataload.FeedRetriever.main(FeedRetriever.java:321)
Caused by: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
    at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:488)
    ... 4 more
Caused by: java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
    at org.apache.wink.client.ClientConfig.<clinit>(ClientConfig.java:52)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getFeed(AtomReader.java:104)
    at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getEntries(AtomReader.java:147)
    at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getEntries(AtomReader.java:1)
    at com.ibm.commerce.foundation.dataload.feedreader.BaseFeedReader.init(BaseFeedReader.java:252)
    at com.ibm.commerce.foundation.dataload.AbstractBusinessObjectLoader.initializeDataReaders(AbstractBusinessObjectLoader.java:1344)
    at com.ibm.commerce.foundation.dataload.AbstractBusinessObjectLoader.init(AbstractBusinessObjectLoader.java:369)
    at com.ibm.commerce.foundation.dataload.BusinessObjectLoader.init(BusinessObjectLoader.java:65)
    at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:431)
    ... 4 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:76)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:396)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:660)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
    ... 16 more
Oct 16, 2012 7:34:11 PM com.ibm.commerce.foundation.dataload.FeedRetriever main
SEVERE: An error occurred while performing data load.
Throwable occurred: com.ibm.commerce.foundation.dataload.exception.DataLoadException: An error has occurred.  If this problem persists, contact product support.
    at com.ibm.commerce.foundation.dataload.FeedRetriever.invokeDataLoad(FeedRetriever.java:247)
    at com.ibm.commerce.foundation.dataload.FeedRetriever.execute(FeedRetriever.java:172)
    at com.ibm.commerce.foundation.dataload.FeedRetriever.main(FeedRetriever.java:321)

50voto

Luís Soares Points 61

Ajouter une implémentation de SLF4J (puisque vous ne disposez que de son API) :

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.26</version>
</dependency>

26voto

EJP Points 113412

Vous devez fournir l'un des différents fichiers .jar d'implémentation de SLF4J dans le classpath, ainsi que le fichier .jar d'interface. Ceci est documenté.

11voto

Yuvraj Kakkar Points 116

Télécharger slf4j-1.7.5.zip

Il contient différents fichiers jar.

Allez dans le dossier -> Integration après avoir extrait le zip et incluez les fichiers jar suivants

  1. slf4j-api-2.0.99
  2. slf4j-simple-1.6.99
  3. junit-3.8.1

9voto

Rashad Saif Points 1359

Cliquez avec le bouton droit de la souris sur les propriétés du projet et suivez les étapes ci-dessous Propriétés du projet" --> "Assemblage de déploiement", en ajoutant "Java Build Path Entries -> Maven Dependencies".

7voto

user3437460 Points 12285

J'ai essayé d'autres solutions et l'exception n'a pas disparu. J'ai donc décompilé l'ensemble du fichier jose4j 0.6.5 jar avec un décompacteur Java et regarder son pom.xml.

Je me suis rendu compte qu'il dépendait spécifiquement de slf4j-api, version 1.7.21 : enter image description here

Dans le pom.xml de mon projet, j'ai donc ajouté exactement la même dépendance, j'ai mis à jour mon projet Maven pour qu'il télécharge ce jar dans mon dépôt et l'exception a disparu.

Cependant, cela peut entraîner une autre erreur causée par slf4j lui-même :

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Pour résoudre ce problème, j'ai ajouté ce qui suit au pom.xml de mon projet. En résumé, vous devez ajouter ce qui suit à votre pom.xml et à mon fichier jose4j a fonctionné sans plus de problèmes :

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.21</version>
</dependency>   

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.6.4</version>
</dependency>

N'oubliez pas de mettre à jour votre projet Maven après avoir modifié votre pom.xml .

(Cliquer avec le bouton droit de la souris sur le dossier du projet dans Eclipse -> Maven -> Projet de mise à jour )

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