web-dev-qa-db-fra.com

Impossible de charger la classe "org.slf4j.impl.StaticLoggerBinder" - Quel chemin de classe?

Ma pom.xml contient une seule référence à SLF4J:

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

Je reçois cette erreur:

SLF4J: échec du chargement de la classe "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Implémentation par défaut de l'enregistreur sans opération (NOP) SLF4J:

Voir http://www.slf4j.org/codes.html#StaticLoggerBinder pour plus de détails.

J'ai vérifié cette URL et en effet elle fournit une solution: "Placer un (et un seul) de 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. "

Ma question est: quel chemin de classe?

  • Le système % CLASSPATH% ? (Je n'en ai pas! Je vais devoir le créer spécialement pour ça)
  • Projet Eclipse .classpath? (Je pense que j'ai essayé mais cela n'a pas aidé)
  • Autre?

J'ai trouvé pas mal quelques articles sur le sujet ici sur SO, mais ils citent tous la même réponse: " placer ... sur le chemin de classe ".

Quel chemin de classe?

20
Withheld

Tout d'abord, pour ajouter SLF4J, vous devez mettre [~ # ~] un [~ # ~] et seulement [~ # ~] une [~ # ~] de ces dépendances dans votre pom.xml. Cela dépend de l'implémentation que vous choisissez d'utiliser. Chaque dépendance que vous ajoutez dans le pom.xml est ajoutée automatiquement dans le chemin de classe. Tant que vous utilisez Eclipse, il n'est pas nécessaire de modifier le% CLASSPATH% du système?

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-log4j12</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Enfin et surtout, vous aurez l'erreur SLF4J: Impossible de charger la classe "org.slf4j.impl.StaticLoggerBinder".

Eclipse Juno et Indigo, lors de l'utilisation de la version maven fournie (m2e), ne suppriment pas le message SLF4J: échec de chargement de la classe "org.slf4j.impl.StaticLoggerBinder". Ce comportement est présent à partir de la version m2e 1.1.0.20120530-0009 et au-delà.

Bien que cela soit indiqué comme une erreur, vos journaux seront enregistrés normalement. L'erreur en surbrillance sera toujours présente jusqu'à ce qu'il y ait une correction de ce bogue. Plus d'informations à ce sujet sur le site de support m2e .

La solution actuellement disponible pour supprimer ce message consiste à utiliser une version externe de maven plutôt que la version intégrée d'Eclipse. Vous pouvez trouver des informations sur cette solution et plus de détails concernant ce bogue dans la question ci-dessous.

SLF4J: échec de chargement de la classe "org.slf4j.impl.StaticLoggerBinder". Erreur

17

Problème:

J'utilise Maven pour gérer mes dépendances. Dans mon cas, la raison pour laquelle j'obtenais cette erreur était car j'en avais plusieurs slf4j-simple jar dans mon système sur mon chemin de classe. Le documentation SLF4J indique:

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.

Solution:

  • Recherchez les fichiers JAR suivants dans votre système de fichiers et supprimez toutes les copies autres que celle de .m3:
    1. slf4j-nop
    2. slf4j-simple
    3. slf4j-log4j12
    4. slf4j-jdk14
    5. logback-classique
0
Shaun Dashjian