SLF4J: échec du chargement de la classe «org.slf4j.impl.StaticLoggerBinder». Erreur

115
  • Concernant Eclipse IDE ( Indigo , Juno et Kepler (versions 32 et 64 bits))
  • Plateformes : Windows , Ubuntu , Mac
  • Version m2e : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 ,
    1.4.0.20130601-0317

Informations générales

L'erreur ci-dessus est survenue après la mise à jour du m2e vers la version 1.1. En supprimant m2e 1.1 et en revenant à m2e 1.0, tout a bien fonctionné. J'ai essayé de répéter le problème sous Windows et Ubuntu et cela m'a donné exactement la même erreur. De nombreuses configurations de slf4j-api et de logback ont ​​été testées mais aucune ne semble fonctionner.

L'erreur apparaît dans n'importe quel projet maven même sans déclarer la dépendance slf4j .

  • Nouveau projet Maven -> maven-archetype-quickstart

    et

  • Nouveau projet Maven -> Projet simple sans sélection d'archétype

    résultat à

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

Environnements et configurations de test

Testé avec Eclipse Indigo et Eclipse Juno (32 et 64 bits tous les deux) sur Mac, 32 bits sur Ubuntu et 64 et 32 ​​bits sur Windows. Testé de nouvelles installations de Juno Classic , des outils de modélisation Juno , de Kepler Standard , des outils de modélisation Kepler et produit la même erreur.

L'erreur apparaît avec nettoyer , installer , tester , déployer , générer des sources , valider , compiler , empaqueter , tester l'intégration , vérifier et des combinaisons de l'objectif nettoyer avec les autres objectifs. Il apparaît également avec les paramètres -e et -X . Il y a eu une tentative de supprimer le référentiel m2e et de le télécharger à partir de zéro, mais encore une fois sans succès. Il convient de mentionner qu'il a été testé sur 3 machines différentes et sur une boîte virtuelle tous les systèmes ci-dessus, mais qu'il a produit la même erreur.

J'ai essayé toutes les différentes configurations de connexion (de 1.0.4 à 1.0.13) qui résolvent les dépendances slf4j-api et logback-core , mais produisent toutes la même erreur:

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>

J'ai essayé toutes les configurations slf4j-simples (de 1.6.1 à 1.7.5) .

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

J'ai essayé toutes les configurations log4j-over-slf4j différentes (de 1.6.1 à 1.7.5) .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

J'ai essayé toutes les configurations slf4j-jdk14 différentes (de 1.6.1 à 1.7.5) .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

J'ai essayé toutes les configurations slf4j-log4j12 différentes (de 1.6.1 à 1.7.5) .

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

Essayé slf4j-nop 1.7.5 configuration.

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-nop</artifactId>
  <version>1.7.5</version>
  <scope>compile</scope>
</dependency>

Enfin, les journaux sont enregistrés et imprimés malgré l'erreur.


Façons de reproduire l'erreur

  • Téléchargez Eclipse Juno, Indigo ou Kepler 32 ou 64 bits (toutes les installations provoqueront la même erreur).

    • Installer m2e - Intégration Maven pour Eclipse

      OU

    • Mettez à jour votre version m2e vers 1.1.0.20120530-0009 , ou 1.2.0.20120903-1050 , ou 1.3.0.20130129-0926 ou 1.4.0.20130601-0317 )


    • Sélectionnez Fichier-> Nouveau->
      Autre-> Projet Maven-> Cliquez sur Suivant-> Sélectionnez maven-archetype-quickstart dans le catalogue-> Terminer

      OU

    • Sélectionnez Fichier-> Nouveau-> Autre-> Projet Maven-> Cliquez sur Suivant-> Sélectionnez Créer un projet simple (ignorer la sélection d'archétype) -> Compléter les informations sur l'artefact-> Terminer

  • Faites un clic droit sur le projet-> Exécute en tant que-> installation propre (ou tout autre objectif mentionné ci-dessus)

La première ligne de la console sera

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.

PS Les projets existants produiront la même erreur après la mise à jour de la version m2e vers 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317


Mises à jour

ÉDITER

Site d'assistance m2e:

  • La question ci-dessus a été publiée en tant que bogue sur le site de support m2e et la réponse d'Igor Fedorenko était que

    Il n'y a pas de plans immédiats pour supprimer ce message.

    Pour visualiser le bogue ci-dessus, veuillez consulter le site d'assistance officiel de m2e


MODIFIER 2

  • L'indication d'erreur ci - dessus est présente également M2e la version 1.2.0.20120903-1050


MODIFIER 3

  • L'indication d'erreur ci - dessus est présente également M2e la version 1.3.0.20130129-0926


MODIFIER 4

  • L'indication d'erreur ci - dessus est présente également M2e la version 1.4.0.20130601-0317


MODIFIER 5

                              ***Reported FIXED***
  • L'erreur ci-dessus est signalée comme corrigée pour m2e version 1.5.0 / Luna M3 ( étape cible ). La version n'est pas encore disponible au téléchargement.
  • La Luna M3 est prévue pour le 15 novembre .
  • La dernière version de développement est disponible ici
  • Vous trouverez plus d'informations sur les jalons m2e dans le référentiel principal m2e .
Margaritis de Konstantinos
la source
@EliranMalka C'est long mais avec une raison. Essayer d'aider les gens à éviter de poser les mêmes questions et à inclure tous les détails qui pourraient sembler nécessaires pour comprendre s'ils sont confrontés au même problème ne m'a pas laissé trop de choix. :-)
Konstantinos Margaritis
J'ai eu cette erreur en essayant d'utiliser les données de printemps avec neo4j que j'ai slf4jdans les deux slf4j-api-1.7.7et jcl-over-slf4j-1.7.7et si j'essaie de supprimer l'un d'entre eux, j'obtiens un message d'erreur indiquant que leur Loggerclasse est manquante. Que devrais-je faire?
user1885868
@KonstantinosMargaritis pouvez-vous s'il vous plaît dire comment résoudre ce problème avec pom.xml, je pourrais le faire fonctionner sur la configuration locale, mais sur jenkins, cela échoue toujours.
vikramvi
Quelle est votre configuration actuelle @vikramvi?
Konstantinos Margaritis
@KonstantinosMargaritis merci de revenir là-dessus. J'ai réalisé que maven était la version 3.0 sur Linux mis à niveau vers la dernière version et j'ai essayé à nouveau. cela a résolu le problème. Mais j'ai dû passer toute la journée à essayer de découvrir ce qui ne va pas. Merci quand même.
vikramvi

Réponses:

75

Je peux également confirmer cette erreur.

Solution de contournement: consiste à utiliser maven externe dans m2eclipse, au lieu de maven intégré.

Cela se fait en trois étapes:

1 Installez maven sur la machine locale (la machine de test était Ubuntu 10.10)

mvn --version

Apache Maven 2.2.1 (rdebian-4) Version Java: 1.6.0_20 Accueil Java: / usr / lib / jvm / java-6-openjdk / jre Paramètres régionaux par défaut: de_DE, encodage de la plateforme: UTF-8 Nom du système d'exploitation: "linux" version: "2.6.35-32-generic" arch: "amd64" Famille: "unix"

2 Exécutez maven en externe lien comment exécuter maven depuis la console

> cd path-to-pom.xml
> mvn test
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Simple
    [INFO]    task-segment: [test]
    [INFO] ------------------------------------------------------------------------
    [...]
    [INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running net.tverrbjelke.experiment.MainAppTest
    Hello World
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    [...]

3 Inside M2eclipse: passer du maven intégré au maven local

  • savoir où dir installation à domicile Maven local est ( mvn --versionou Google pour votre MAVEN_HOME, pour moi cela m'a aidé qui est /usr/share/maven2)
  • dans Menu éclipse-> Fenêtre-> Préférences-> Maven-> Installation-> entrez cette chaîne. Ensuite, vous devriez avoir basculé sur votre nouveau maven externe.
  • puis exécutez votre projet comme par exemple "maven test".

Le message d'erreur devrait avoir disparu.

tverrbjelke
la source
1
J'accepte votre réponse car c'est la seule solution de contournement pour contourner l'erreur ennuyeuse. Merci beaucoup pour votre réponse analytique. :) ..
Konstantinos Margaritis
3
hmm Je suis sous Windows et j'ai changé pour les nouvelles installations externes, mais l'erreur existe toujours !?
stefan.at.wpf
4
désolé, ça marche. Notez qu'il existe une option pour le runtime maven (interne / externe) sur les configurations d'exécution. donc si vous en utilisez un enregistré, assurez-vous de le mettre à jour.
stefan.at.wpf
@ stefan.at.wpf C'est bon d'entendre que ça marche. Si vous le souhaitez, vous pouvez vous inscrire à la liste de diffusion du bogue et vous informer en cas de changement.
Konstantinos Margaritis
2
Pour moi, il #mvn --versionest pratique de montrer le MAVEN_HOME.
biaobiaoqi
25

Il existe une documentation sur le site SLf4J pour résoudre ce problème. J'ai suivi cela et ajouté slf4j-simple-1.6.1.jar à mon application avec slf4j-api-1.6.1.jar que j'avais déjà. Cela a résolu mon problème

slf4j

Mohammed Irfan Tirupattur
la source
4
cela fonctionne, dans maven peut ajouter: <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-simple </artifactId> <version> 1.XX </version> </dependency> // Il suffit de remplacer par votre version
Enrique San Martín
@Mohammed Irfan puis-je avoir besoin d'ajouter ce twojar dans le dossier libs dans eclipse?
Erum
1
J'utilise une version ultérieure de Maven et j'ai suivi les étapes ci-dessus, mais c'est la réponse qui a fait disparaître le problème - merci :)
Rob Wilson
15

Si vous utilisez Gradle, ajoutez ceci:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}
Dias
la source
Cela fonctionne ici avec Gradle !! Pouvez-vous expliquer ce qui se passe lorsque nous ajoutons cette bibliothèque?
Felipe Pereira
5

Eu une erreur similaire avec le même résultat avec Gradle et a pu la résoudre en suivant:

//compile 'org.slf4j:slf4j-api:1.7.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.1'

La ligne non commentée est celle qui a provoqué la sortie d'erreur. Je crois que vous pouvez transférer cela à Maven.

Tomasb
la source
3

Vous n'avez pas spécifié de version dans votre fichier de dépendances maven, c'est peut-être pour cette raison qu'il ne sélectionne pas le dernier jar.
Vous avez également besoin d'une autre dépendance avec un identifiant d' slf4j-log4j12artefact.
Incluez ceci dans votre fichier pom

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

Faites-moi savoir si l'erreur n'est toujours pas résolue,
je vous recommande également de voir ce lien

khan
la source
3
Toutes les versions indiquées ont été vérifiées. Je ne l'ai pas déclaré là pour éviter les répétitions. La balise est laissée vide intentionnellement. Veuillez voir que le problème ci-dessus a été publié comme un bogue sur le site de support m2e et qu'il n'y a aucun moyen de résoudre l'erreur ci-dessus à moins qu'il ne soit supprimé par les développeurs m2e. J'ai lu le site Web à plusieurs reprises et j'ai inclus toutes les bibliothèques possibles qui pourraient résoudre le problème. Malheureusement, aucune configuration n'a fonctionné car elle concerne m2e plutôt que les dépendances déclarées. L'erreur ci-dessus ne s'affiche pas dans la console maven ou Netbeans. UNIQUEMENT dans Eclipse.
Konstantinos Margaritis
1
slf4j-log4j12 est une autre liaison avec slf4j-simple, slf4j-jdk14 et logback-classic. L'une des dépendances ci-dessus doit avoir résolu le problème avec la liaison. Comme je l'ai expliqué plus tôt, le problème vient du m2e. Merci quand même.
Konstantinos Margaritis
3

Collez ce code dans votre fichier pom.xml. Ça marche pour moi.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
James25
la source
Il résout l'erreur «org.slf4j.impl.StaticLoggerBinder», mais maintenant je consigne tout, je mets log4j.xml et log4j.properties (un à la fois) dans src / test / resources, maintenant tous les frameworks de mon projet sont journalisés des tonnes de messages sauf mes propres enregistrements.
OJVM
1

Avait examiné le problème après l'avoir fait surface. Croyez que ce sera une bonne lecture pour les autres qui viennent ici avec le même problème:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=387064

Prince
la source
veuillez fournir une réponse complète, pas seulement un lien.
slfan
@Prince Si vous lisez la description de la question, vous pouvez trouver une partie qui dit "Pour visualiser le bogue ci-dessus, veuillez vous référer au site de support officiel de m2e" qui pointe vers l'URL que vous avez mentionnée.
Konstantinos Margaritis
Oups ... Mon mal. Excuses sincères!
Prince
1

J'ai eu le même problème pour mon application Spring Boot - Gradle fonctionnant sur Eclipse Luna. Je pourrais le résoudre en ajoutant manuellement une entrée dans le .classpath de mon projet

<classpathentry sourcepath="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/3150039466ad03e6ef1c7ec1c2cbb0d96710cf64/slf4j-simple-1.7.7-sources.jar" kind="lib" path="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/8095d0b9f7e0a9cd79a663c740e0f8fb31d0e2c8/slf4j-simple-1.7.7.jar"/>

L'idée est de suivre cette solution. Mais la mise en œuvre dépend du cas par cas. Une façon de réparer est celle que j'ai utilisée ci-dessus.

J'espère que cela t'aides.

Vipul Agarwal
la source
0

Ce n'est pas un message d'erreur mais un avertissement. Cela est très clairement expliqué sur leur site Web comme suit:

Ce message d'avertissement, c'est-à-dire pas une erreur, est signalé lorsque aucun fournisseur SLF4J n'a pu être trouvé sur le chemin de classe. Placer un (et un seul) slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar ou logback-classic.jar sur le chemin de classe devrait résoudre le problème. Notez que ces fournisseurs doivent cibler slf4j-api 1.8 ou version ultérieure.

En l'absence de fournisseur, SLF4J utilisera par défaut un fournisseur d'enregistreur sans opération (NOP).

https://www.slf4j.org/codes.html#StaticLoggerBinder

avenugopalan
la source
0

J'ai eu le même problème en écrivant le programme producteur Kafka en utilisant java. Cette erreur est due à la mauvaise bibliothèque slf4j. utilisez ci-dessous la dépendance maven slf4j-simple qui résoudra votre problème.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
svk 041994
la source