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

619

Mon application doit être déployée sur tcServer et WebSphere 6.1. Cette application utilise ehCache et nécessite donc slf4j comme dépendance. En conséquence, j'ai ajouté le bocal slf4j-api.jar (1.6) à mon fichier de fichiers de guerre.

L'application fonctionne correctement dans tcServer à l'exception de l'erreur suivante:

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.

Cependant, lorsque je déploie dans WebSphere, j'obtiens un java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder.

Également accompagné de Failed to load class "org.slf4j.impl.StaticMDCBinder"

J'ai vérifié les chemins de classe des deux serveurs d'applications et il n'y a pas d'autre pot slf4j.

Quelqu'un at-il une idée de ce qui peut se passer ici?

JJ180
la source
Cet article a résolu mon problème
Accountant م

Réponses:

517

J'ai eu le même problème avec WebSphere 6.1. Comme l'a souligné Ceki, il y avait des tonnes de pots que WebSphere utilisait et l'un d'eux pointait vers une ancienne version de slf4j.

La solution de secours sans opération ne se produit qu'avec slf4j -1.6+, donc tout ce qui est plus ancien lèvera une exception et interrompra votre déploiement.

Il existe une documentation sur le site SLf4J qui résout ce problème. J'ai suivi cela et ajouté slf4j-simple-1.6.1.jarà ma demande avec slf4j-api-1.6.1.jarlaquelle j'avais déjà.

Cela a résolu mon problème. J'espère que cela aide ceux qui ont ce problème.

Prasanna
la source
4
Oui, l'erreur va comme aussi mentionnée ici - slf4j.org/manual.html Mais j'obtiens maintenant une nouvelle erreur - Causée par: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
david blaine
1
"Comme l'a souligné Ceki, il y avait des tonnes de pots que WebSphere utilisait et l'un d'eux pointait vers une ancienne version de slf4j." - Tant pis pour Maven qui s'occupe des dépendances! Quelle blague.
AndroidDev
167
Hé, vous les utilisateurs MAVEN: mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.6.2
Sergio
2
J'utilise 1.7 et a le même problème. J'ajoute slf4j-simple-1.7.jar et maintenant le problème est résolu.
littletiger
1
Ça ne marche pas pour moi. Le pot slf4j-simple ne récupère pas le log4j.properties. Au lieu de cela, j'utilise l'implémentation en ajoutant slf4j-log4j12 et log4j jar, ce qui fonctionne bien pour moi.
flyrain
379

C'est pour ceux qui sont venus ici de la recherche Google.

Si vous utilisez maven, ajoutez simplement ce qui suit

   <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.7.5</version>
   </dependency>

Ou

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
   </dependency>
Igor Katkov
la source
1
Y a-t-il une raison pour slf4j-simplene pas être la même version que slf4j-api? Ils fonctionneraient probablement bien ensemble, mais je pense que c'est plus sûr et une meilleure pratique en général de leur faire utiliser la même version. De plus, si vous devez activer la journalisation sur console uniquement, par exemple, lors de l'exécution de tests unitaires, cela slf4j-simplesemble suffisant (c'était pour moi cependant).
Ivaylo Slavov
23
AFAIK vous devriez avoir seulement 1 impl de slf4j, c'est-à-dire soit slf4j-log4j12 OU slf4j-simple, pas les deux.
Ondra Žižka
@Igor KatKov cela ne fonctionne que sur la machine locale mais obtient la même erreur sur Jenkins, je ne sais pas ce qui ne va pas. pouvez-vous clarifier
vikramvi
slf4j-api nécessite une configuration qui n'est pas disponible lors de sa première exécution (et qui n'a modifié aucun fichier de configuration). L'utilisation de slf4j-simple vous permettra d'utiliser l'enregistreur de base sans configurer de fichiers à l'exception de WYSIWYG. Vous pouvez ensuite revenir à slf4j-api une fois que vous avez appris à configurer les fichiers et à personnaliser la sortie de l'enregistreur comme vous le souhaitez. (
J'apprends
53

Ajoutez simplement ceci à votre pom.xml :

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.21</version>
</dependency>
Benny Neugebauer
la source
3
La solution a fonctionné pour moi; Il vaut la peine de pointer vers la documentation (où j'ai trouvé l'erreur expliquée): slf4j.org/codes.html#StaticLoggerBinder
Witold Kaczurba
2
rien d'autre, mais cela a fonctionné pour moi tout en exécutant un simple exemple de producteur de kafka. merci beaucoup!
Viren du
@WitoldKaczurba a raison. J'avais le même problème lors de l'utilisation de la dépendance à l'aide de maven. Je viens de googler et je suis allé sur slf4j.org/codes.html#StaticLoggerBinder qui énonce le problème et sa solution. J'utilisais slf4j-api version 1.7.25. Après avoir vérifié la documentation sur le lien mentionné, je viens d'utiliser <dépendance> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>et le problème a été résolu
Mohammad Anas
Je ne comprends pas l'intérêt d'utiliser Maven si les bibliothèques qui ont besoin d'un enregistreur (par exemple les guidons qui ont besoin de slf4j) ne le déclarent pas dans leur pom. Quoi qu'il en soit: merci.
Eric Duminil
Dans mon cas, ce n'est pas une solution. C'est seulement cacher des informations, qu'il existe des versions incompatibles de slf4j et log4j ou d'un autre plugin.
hariprasad
42

Vous devez ajouter suivant fichier jar dans votre classpath: slf4j-simple-1.6.2.jar. Si vous ne l'avez pas, veuillez le télécharger. Veuillez vous référer à http://www.slf4j.org/codes.html#multiple_bindings

Ashish
la source
Mais je n'ai pas ce pot sur mon chemin de classe tcServer, c'est ce qui m'embrouille. Je ne comprends pas comment je n'ai pas besoin d'un pot supplémentaire dans tcServer mais le fais dans WebSphere
JJ180
1
A fonctionné pour moi, et beaucoup plus simple que la réponse acceptée. La version 1.7.7 a également fonctionné.
La-comadreja
1
J'en avais déjà jul-to-slf4jdans mon pom.xmlet juste ajouté slf4j-simpleavant et ça marche bien.
slugmandrew
Comment peut-on simplement ajouter le fichier jar au chemin de classe?
Dean013
S'il vous plaît, pouvez-vous m'expliquer quel est le chemin de la classe? où se trouve? Je ne comprends pas
Rose8525
36

Plusieurs réponses recommandent ici d'ajouter la dépendance slf4j-simple à votre fichier pom maven. Vous voudrez peut-être vérifier la version la plus récente.

Sur https://mvnrepository.com/artifact/org.slf4j/slf4j-simple, vous trouverez la dernière version de SLF4J Simple Binding. Choisissez celui qui vous convient le mieux (toujours le 1.7.26 de 2019-02 est la version stable à partir de 2019-07) et incluez-le dans votre pom.xml.

Pour votre commodité, certaines dépendances sont affichées ici - mais elles peuvent ne pas être à jour lorsque vous lisez ceci!

Version alpha de 2019-10

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>2.0.0-alpha1</version>
 </dependency>

Version bêta de février 2019

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.8.0-beta4</version>
</dependency>

Version stable 2019-12

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.7.30</version>
</dependency>

J'ai supprimé la partie test de portée grâce au commentaire ci-dessous.

Wolfgang Fahl
la source
6
pourquoi utilisez-vous <scope>test</scope>? D'après mon expérience, j'ai au moins besoin de runtimeportée pour m'assurer qu'il slf4j-simpleest sur le chemin de classe. Curieux de savoir comment vous avez réussi à faire fonctionner cela avec une seule testportée ...
ecoe
Merci de l'avoir signalé. J'ai supprimé la balise scope de ma réponse en conséquence. C'était un problème de copier-coller - le lien que je fournis fournit la dépendance bêta de cette façon.
Wolfgang Fahl
27

J'étais confronté à la même erreur. J'ai configuré slf4j-api, slf4j-log4j12 et log4j, dans mon développement local. Toute la configuration était correcte, mais la dépendance slf4j-log4j12 que j'ai copiée à partir de mvnrepository avait une portée de test <scope>test</scope>. Quand j'ai enlevé ça, tout va bien.

Parfois, des erreurs stupides nous cassent la tête;)

thangaraj
la source
1
Mille mercis! Je hade le même problème et j'allais y renoncer jusqu'à ce que je trouve votre message!
Ergodyne
1
Cela m'a aussi aidé
cod3min3
27

Parfois, nous devrions voir la note de l'avertissement SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details..

Cela se produit lorsqu'aucune liaison SLF4J appropriée n'a pu être trouvée sur le chemin de classe

Vous pouvez rechercher la raison pour laquelle cet avertissement apparaît.
Ajout d' un du pot de *slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jarou logback-classic.jar*sur le chemin de la classe devrait résoudre le problème.

compile "org.slf4j:slf4j-simple:1.6.1"

par exemple, ajoutez le code ci-dessus à votre build.gradleou le code correspondant à pom.xmlpour le projet maven.

Edward
la source
15

mettre le fichier slf4j-log4j12-1.6.4.jardans le chemin de classe fera l'affaire.

pierres333
la source
6
ou ajoutez la dépendance dans votre pom <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-log4j12 </artifactId> </dependency>
enkor
11

Si vous utilisez maven pour la gestion des dépendances, vous pouvez simplement ajouter la dépendance suivante dans pom.xml

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

Pour les utilisateurs non-Maven Téléchargez simplement la bibliothèque et placez-la dans le chemin d'accès aux classes de votre projet.

Ici vous pouvez voir les détails: http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/

shohan
la source
1
Aussi pour les utilisateurs de maven, j'ai trouvé que je devais ajouter ce qui suit dans pom.xml, qui apporte également logback-core automatiquement: <dependency> <groupId> ch.qos.logback </groupId> <artifactId> logback-classic </ artifactId> <version> 1.0.9 </version> </dependency>
Paul
2
This is not an error. This message tells you that you do not have any logger implementation (such as e.g. Logback) added in classpath, and therefore NOP (No Operation) log Recherchez le commentaire sarxos comme mentionné par @Paul besoin d'ajouter logback-classic. Une autre approche du changement à <artifactId>slf4j-simple</artifactId>partir de fait <artifactId>slf4j-api</artifactId>également le travail. Il est illustré ici
Abhijeet
10

SLF4j est une abstraction pour divers cadres de journalisation . Par conséquent, en plus d'avoir slf4j, vous devez inclure l'un de vos cadres de journalisation comme log4j ou logback (etc.) dans votre chemin de classe.
Pour avoir une idée, reportez-vous à la première étape du bébé sur http://logback.qos.ch/manual/introduction.html

Anver Sadhat
la source
2
L'ajout de logback a résolu ce problème pour moi. J'ai laissé tomber le dernier classique de logback dans pom (1.1.7) et il a échoué car la dépendance slf4j était trop ancienne (1.6.2). La rétrogradation à 1.0.0 et le fait de laisser slf4j à 1.6.x ont fonctionné, tout comme la mise à niveau de slf4j à 1.7.20 et la logback à 1.1.7.
ECDragon
5

Slf4j est une façade pour les cadres de journalisation sous-jacents comme log4j, logback, java.util.logging.

Pour se connecter aux frameworks sous-jacents, slf4j utilise une liaison.

  • log4j - slf4j-log4j12-1.7.21.jar
  • java.util.logging - slf4j-jdk14-1.7.21.jar etc

L'erreur ci-dessus est levée si le pot de reliure est manquant. Vous pouvez télécharger ce pot et l'ajouter à classpath.

Pour la dépendance maven,

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

Cette dépendance en plus de slf4j-log4j12-1.7.21.jar, elle tirera slf4j-api-1.7.21.jar ainsi que log4j-1.2.17.jar dans votre projet

Référence: http://www.slf4j.org/manual.html

venkatesh mankena
la source
Votre solution était la seule qui a fonctionné pour moi, merci!
Edenshaw
5

J'étais confronté au même problème avec les applications Spring-boot-2 avec la bibliothèque Java 9.

L'ajout de la dépendance suivante dans mon pom.xml a résolu le problème pour moi:

    <dependency>
        <groupId>com.googlecode.slf4j-maven-plugin-log</groupId>
        <artifactId>slf4j-maven-plugin-log</artifactId>
        <version>1.0.0</version>
    </dependency>
KayV
la source
4

Dans le cas Websphere, vous disposez d'une ancienne version de slf4j-api.jar, 1.4.x. ou 1.5.x traînant quelque part. Le comportement que vous observez sur tcServer, c'est-à-dire le basculement vers NOP, se produit sur les versions slf4j 1.6.0 et ultérieures. Assurez-vous que vous utilisez slf4j-api-1.6.x.jar sur toutes les plates-formes et qu'aucune version antérieure de slf4j-api n'est placée sur le chemin de classe.

Ceki
la source
Merci, j'ai vérifié mon chemin de classe WebSphere 6.1 et je ne vois aucune autre version de slf4j. Par exemple, j'ai fait une recherche sur mon système de fichiers WebSphere pour trouver le fichier slf4j et je n'ai récupéré que ma version 1.6. Savez-vous si WebSphere est fourni avec slf4j?
JJ180
Tout est possible, mais je serais très surpris si WebSphere était fourni avec slf4j-api. Ensembles de soudure slf4j-api.jar. Utilisez-vous Weld?
Ceki
4

Je suis entré dans ce problème lorsque j'obtiens l'erreur suivante:

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.

quand j'utilisais slf4j-api-1.7.5.jardans mon libs.

Malgré ce que j'ai essayé avec tous les pots de complément suggérés, comme slf4j-log4j12-1.7.5.jar, slf4j-simple-1.7.5le message d'erreur persistait. Le problème a finalement été résolu lorsque j'ai ajouté slf4j-jdk14-1.7.5.jaraux bibliothèques java.

Obtenez le package slf4j complet à http://www.slf4j.org/download.html

user278049
la source
4

Veuillez ajouter les dépendances suivantes à pom pour résoudre ce problème.

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

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>
gowthamjs23
la source
Je viens d'inclure la première dépendance - comme indiqué dans une autre réponse - et cela fonctionne. Les deux dépendances ne résolvent pas le problème pour moi.
RubioRic
Et souhaitez utiliser le maven local au lieu du maven groupé d'Intellij.
Abdul Gaffar
4

Comme alternative à l'inclusion de pots et aux solutions pures de maven, vous pouvez l'inclure à partir de maven avec gradle.

Exemple de version 1.7.25

// https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
api group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'

Mettez cela dans les dépendances de votre build.gradlefichier.

Vrakfall
la source
3

Je travaille dans un projet Struts2 + Spring. Il faut donc une dépendance slf4j-api-1.7.5.jar.

Si je lance le projet, je reçois une erreur comme

Impossible de charger la classe "org.slf4j.impl.StaticLoggerBinder"

J'ai résolu mon problème en ajoutant le slf4j-log4j12-1.7.5.jar.

Ajoutez donc ce pot dans votre projet pour résoudre le problème.

softmage99
la source
3

Comme Manuel SLF4J états

La façade de journalisation simple pour Java (SLF4J) sert de façade ou d'abstraction simple pour divers cadres de journalisation, tels que java.util.logging, logback et log4j.

et

L'avertissement disparaît dès que vous ajoutez une liaison à votre chemin de classe.

Vous devez donc choisir la liaison que vous souhaitez utiliser.

Liaison NoOp (slf4j-nop)

Liaison pour NOP, rejetant silencieusement toute journalisation.

Vérifiez la nouvelle version sur https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-nop&core=gav

Liaison simple (slf4j-simple)

renvoie tous les événements vers System.err. Seuls les messages de niveau INFO et supérieur sont imprimés. Cette liaison peut être utile dans le contexte de petites applications.

Vérifiez la nouvelle version sur https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-simple&core=gav

Liaisons pour les infrastructures de journalisation (java.util.logging, logback, log4j)

Vous avez besoin de l'une de ces liaisons si vous souhaitez écrire un journal dans un fichier.

Voir la description et les instructions sur https://www.slf4j.org/manual.html#projectDep


Mon avis

Je recommanderais Logback car c'est un successeur du projet log4j .

Vérifiez la dernière version de la liaison à l' adresse https://search.maven.org/search?q=g:ch.qos.logback%20AND%20a:logback-classic&core=gav

Vous obtenez la sortie de la console hors de la boîte, mais si vous avez besoin d'écrire des journaux dans un fichier, mettez simplement la FileAppenderconfiguration dans le src/main/resources/logback.xmlou dans le src/test/resources/logback-test.xmljuste comme ceci:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/logs.log</file>

        <encoder>
            <pattern>%date %level [%thread] %logger{10} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

    <logger level="DEBUG" name="com.myapp"/>
</configuration>

(Voir la description détaillée dans le manuel: https://logback.qos.ch/manual/configuration.html )

Lu55
la source
3
     <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>

Mettre la dépendance mentionnée ci-dessus dans le fichier pom.xml

Ajay
la source
Mais n'oubliez pas de vérifier la dernière version.
user1053510
2

J'ai ajouté cette dépendance pour résoudre ce problème:

https://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.7.25
Amado Saladino
la source
1

Selon la documentation officielle du SLF4J

Impossible de charger la classe org.slf4j.impl.StaticLoggerBinder

Ce message d'avertissement est signalé lorsque la classe org.slf4j.impl.StaticLoggerBinder n'a pas pu être chargée en mémoire. Cela se produit lorsqu'aucune liaison SLF4J appropriée n'a pu être trouvée sur le chemin de classe. Le fait de 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.

Ajoutez simplement ce pot avec slf4j api.jar à votre chemin de classe pour faire avancer les choses. Bonne chance

Roushan
la source
1

Je le résous en ajoutant cette bibliothèque: slf4j-simple-1.7.25.jar Vous pouvez le télécharger sur le site officiel https://www.slf4j.org/download.html

Luis Manrique
la source
1

rencontré le même problème sur payara 5.191

jcl-over-slf4j et slf4j-log4j12 ont résolu le problème

<properties>
  <slf4j.version>1.7.29</slf4j.version>
</properties>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
  <type>jar</type>
</dependency> 

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

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>${slf4j.version}</version>
</dependency>
telman shahbazov
la source
0

Je sais que ce message est un peu ancien, mais au cas où quelqu'un d'autre rencontrerait ce problème:

Ajoutez slf4j-jdk14-XXXjar à votre CLASSPATH (où XXX est le numéro de version - par exemple slf4j-jdk14-1.7.5.jar).

HTH Peter

midiman
la source
1
Suggérez-vous aux utilisateurs de revenir à la journalisation JDK1.4 pour résoudre un problème de chemin de classe? Regardez également cette entrée de la FAQ: slf4j.org/faq.html#need_to_recompile
mwhs
0

J'utilise Jena et j'ajoute la dépendance de compagnon à pom.xml

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

J'essaye d'ajouter slf4j-simple mais il disparaît juste l'erreur "SLF4J: Impossible de charger la classe" org.slf4j.impl.StaticLoggerBinder "" mais logback-classic affiche plus d'informations détaillées.

Le document officiel

Pingjiang Li
la source
0

la solution est indiquée sur leur site officiel:

Impossible de charger la classe org.slf4j.impl.StaticLoggerBinder

Ce message d'avertissement est signalé lorsque la classe org.slf4j.impl.StaticLoggerBinder n'a pas pu être chargée en mémoire. Cela se produit lorsqu'aucune liaison SLF4J appropriée n'a pu être trouvée sur le chemin de classe. Le placement d'un (et d'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. DEPUIS 1.6.0 À partir de SLF4J version 1.6, en l'absence de liaison, SLF4J passera par défaut à une implémentation de journalier sans opération (NOP). Si vous êtes responsable de l'empaquetage d'une application et que vous ne vous souciez pas de la journalisation, le fait de placer slf4j-nop.jar sur le chemin de classe de votre application supprimera ce message d'avertissement. Notez que les composants intégrés tels que les bibliothèques ou les frameworks ne doivent pas déclarer de dépendance sur une liaison SLF4J mais dépendent uniquement de slf4j-api.

solution: j'ai ajouté à mon projet en utilisant la recherche maven sur intellij et j'ai choisi le slf4j-jdk14.jar.

Badr Bellaj
la source
0

Votre problème est probablement dû à <scope>test</scope>(dans certains cas également <scope>provided</scope>), comme mentionné @thangaraj .

La documentation dit:

Cette portée indique que la dépendance n'est pas requise pour une utilisation normale de l'application et n'est disponible que pour les phases de compilation et d'exécution des tests. Les dépendances de test ne sont pas transitives et ne sont présentes que pour les chemins de classe de test et d'exécution.

Donc, si vous n'avez pas besoin de dépendances à des fins de test, vous pouvez utiliser à la place de (ce que vous verrez dans mvnrepository ):

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-nop</artifactId>
    <version>1.7.24</version>
    <scope>test</scope>
</dependency>

Sans aucune étendue (par défaut, il s'agirait de compiler l'étendue lorsqu'aucune autre étendue n'est fournie):

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
</dependency>

C'est la même chose que:

 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
 <dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
   <scope>compile</scope>
 </dependency>
invzbl3
la source
0

Pour moi, le problème était: en utilisant Hibernate, j'ai vu qu'il utilisait déjà slf4j, et il était déjà dans mon chemin de classe, alors j'ai décidé de l'utiliser. L'étape suivante - ajouter imlementor pour slf4j, j'ai donc ajouté à maven:

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

Mais cela a échoué par erreur! SLF4J: échec du chargement de la classe "org.slf4j.impl.StaticLoggerBinder"

La solution était la suivante: la dépendance d'Hibernate de slf4j était la version 1.7.26 , et j'ai ajouté la dépendance de version mineure 1.7.25 . Alors quand j'ai corrigé ça - tout est devenu OK

JeSa
la source
0

Je n'ai ajouté aucune dépendance, je change juste la façon dont je les consommais.

Aperçu du code

(Décommentez ce code si vous utilisez la version de recherche élastique <7.0)

IndexRequest indexRequest = new IndexRequest(
  "twitter",
  "tweets",
  id // this is to make our consumer idempotent
).source(record.value(), XContentType.JSON);

Code actuel

IndexRequest indexRequest = new IndexRequest("tweets")
  .source(record.value(), XContentType.JSON)
  .id(id); // this is to make our consumer idempotent

J'utilise bulkrequest et avec cela je supprime cette erreur.

Dante Astudillo
la source