web-dev-qa-db-fra.com

Échec du chargement de l'erreur de classe "org.slf4j.impl.StaticLoggerBinder"

J'ouvre ce post après que je n'ai pas pu trouver de solution dans le post: Impossible de charger la classe "org.slf4j.impl.StaticLoggerBinder" error

J'ai également ouvert un projet Maven dans IntelliJ et j'ai obtenu l'erreur suivante après avoir choisi l'option "redéployer" dans le plugin Tomcat7:

SLF4J: Impossible de charger la classe "org.slf4j.impl.StaticLoggerBinder". SLF4J: Mise en œuvre par défaut de l'enregistreur sans opération (NOP) SLF4J: Voir http://www.slf4j.org/codes.html#StaticLoggerBinder pour plus de détails.

Dans le lien ci-joint, il était recommandé d'aller dans Fichier-> Structure du projet -> Artefacts et de rechercher les erreurs. C'est ce que je vois:  enter image description here

J'ai aussi les dépendances suivantes dans le fichier pom.xml:

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
        </dependency>

Pouvez-vous m'aider s'il vous plaît à trouver l'erreur?

3
CrazySynthax

Peut-être y at-il deux problèmes:

  1. incompatibilité de version de vos dépendances
  2. un problème lorsque vous déployez votre application

Pour reproduire votre erreur, j'ai créé ce mini programme:

package de.so;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DemoSlf4j
{
    private static Logger logger = LoggerFactory.getLogger(DemoSlf4j.class);

    public static void main(String[] args)
    {
        logger.error("Start ...");
    }
}

avec seulement ces dépendances (identiques à celles que vous avez utilisées) dans pom.xml:

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.6</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>
</dependencies>

J'ai ces messages:

SLF4J: Le chemin d'accès aux classes contient plusieurs liaisons SLF4J. SLF4J: Liaison trouvée dans [jar: fichier:/D: /Maven-Repo/org/slf4j/slf4j-log4j12/1.5.6/slf4j-log4j12-1.5.6.jar! /Org/slf4j/impl/StaticLoggerBinder.class ] SLF4J: Liaison trouvée dans [jar: fichier:/D: /Maven-Repo/org/slf4j/slf4j-simple/1.7.21/slf4j-simple-1.7.21.jar!/Org/slf4j/impl/StaticLoggerBinder. class] SLF4J: Voir http://www.slf4j.org/codes.html#multiple_bindings pour une explication. SLF4J: La liaison réelle est de type [org.slf4j.impl.Log4jLoggerFactory] SLF4J: La version demandée 1.5.6 par votre liaison slf4j n'est pas compatible avec [1.6, 1.7] SLF4J: Voir http: //www.slf4j. org/codes.html # version_mismatch pour plus de détails. log4j: WARN Aucun ajout de correcteur n'a été trouvé pour l'enregistreur (de.so.DemoSlf4j). log4j: WARN Veuillez initialiser correctement le système log4j.

Lorsque j'utilise ces dépendances, tout va bien. Regardez les versions!

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version> <!-- or use LATEST -->
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version> <!-- or use LATEST -->
    </dependency>
</dependencies>

Si vous utilisez org.slf4j:slf4j-log4j12:1.7.21 au lieu de slf4j-simple (ce qui est plus probable pour la production), vous obtiendrez:

log4j: WARN Aucun ajout de correcteur n'a été trouvé pour l'enregistreur (de.so.DemoSlf4j). log4j: WARN Veuillez initialiser correctement le système log4j. log4j: WARN Voir http://logging.Apache.org/log4j/1.2/faq.html#noconfig pour plus d'informations.

Alors faites ceci:

  • examinez dans les dépendances de votre projet si d'autres artefacts ont des dépendances en cascade pour les infrastructures de journalisation (log4j, slf4f, ...).
  • vérifiez si vos dépendances sont correctement déployées sur votre Tomcat. (.../WEB-INF/lib)
  • vérifier les versions
5
JimHawkins

Vous rencontrez peut-être un bocal fissuré dans votre projet, vérifiez-le dans les détails du modèle de débogage. Je rencontrais également ce problème. Lorsque je construis avec un modèle de débogage, je vois un avertissement concernant:

/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar, alors supprimez-le et reconstruisez-le. problème résolu.

0
user6753017

Vous fournissez une api de journal et deux implémentations différentes, slf4j-log4j12 et slf4j-simple. J'ai eu le même problème, mais dans mon cas, il m'a envoyé un message d'erreur me demandant de «supprimer un» du chemin de classe.

Vous pouvez essayer de supprimer slf4j-simple ou slf4j-log4j12 des dépendances, de nettoyer et de reconstruire le projet.

0
Nitin1706