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?
Réponses:
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 avecslf4j-api-1.6.1.jar
laquelle j'avais déjà.Cela a résolu mon problème. J'espère que cela aide ceux qui ont ce problème.
la source
C'est pour ceux qui sont venus ici de la recherche Google.
Si vous utilisez maven, ajoutez simplement ce qui suit
Ou
la source
slf4j-simple
ne pas être la même version queslf4j-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, celaslf4j-simple
semble suffisant (c'était pour moi cependant).Ajoutez simplement ceci à votre pom.xml :
la source
<groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>
et le problème a été résoluVous 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_bindingsla source
jul-to-slf4j
dans monpom.xml
et juste ajoutéslf4j-simple
avant et ça marche bien.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
Version bêta de février 2019
Version stable 2019-12
J'ai supprimé la partie test de portée grâce au commentaire ci-dessous.
la source
<scope>test</scope>
? D'après mon expérience, j'ai au moins besoin deruntime
portée pour m'assurer qu'ilslf4j-simple
est sur le chemin de classe. Curieux de savoir comment vous avez réussi à faire fonctionner cela avec une seuletest
portée ...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;)
la source
Parfois, nous devrions voir la note de l'avertissement
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
.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.jar
oulogback-classic.jar*
sur le chemin de la classe devrait résoudre le problème.par exemple, ajoutez le code ci-dessus à votre
build.gradle
ou le code correspondant àpom.xml
pour le projet maven.la source
mettre le fichier
slf4j-log4j12-1.6.4.jar
dans le chemin de classe fera l'affaire.la source
Si vous utilisez maven pour la gestion des dépendances, vous pouvez simplement ajouter la dépendance suivante dans pom.xml
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/
la source
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é iciSLF4j 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
la source
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.
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,
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
la source
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:
la source
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.
la source
Je suis entré dans ce problème lorsque j'obtiens l'erreur suivante:
quand j'utilisais
slf4j-api-1.7.5.jar
dans monlibs
.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.5
le message d'erreur persistait. Le problème a finalement été résolu lorsque j'ai ajoutéslf4j-jdk14-1.7.5.jar
aux bibliothèques java.Obtenez le package slf4j complet à http://www.slf4j.org/download.html
la source
Veuillez ajouter les dépendances suivantes à pom pour résoudre ce problème.
la source
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
Mettez cela dans les dépendances de votre
build.gradle
fichier.la source
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.
la source
Comme Manuel SLF4J états
et
Vous devez donc choisir la liaison que vous souhaitez utiliser.
Liaison NoOp (slf4j-nop)
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)
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
FileAppender
configuration dans lesrc/main/resources/logback.xml
ou dans lesrc/test/resources/logback-test.xml
juste comme ceci:(Voir la description détaillée dans le manuel: https://logback.qos.ch/manual/configuration.html )
la source
Mettre la dépendance mentionnée ci-dessus dans le fichier pom.xml
la source
J'ai ajouté cette dépendance pour résoudre ce problème:
la source
Selon la documentation officielle du SLF4J
Ajoutez simplement ce pot avec slf4j api.jar à votre chemin de classe pour faire avancer les choses. Bonne chance
la source
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
la source
rencontré le même problème sur payara 5.191
jcl-over-slf4j et slf4j-log4j12 ont résolu le problème
la source
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
la source
J'utilise Jena et j'ajoute la dépendance de compagnon à pom.xml
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
la source
la solution est indiquée sur leur site officiel:
solution: j'ai ajouté à mon projet en utilisant la recherche maven sur intellij et j'ai choisi le slf4j-jdk14.jar.
la source
Votre problème est probablement dû à
<scope>test</scope>
(dans certains cas également<scope>provided</scope>
), comme mentionné @thangaraj .La documentation dit:
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 ):
Sans aucune étendue (par défaut, il s'agirait de compiler l'étendue lorsqu'aucune autre étendue n'est fournie):
C'est la même chose que:
la source
Voici mes 5 cents ...
J'ai eu les mêmes problèmes lors des tests. Je l'ai donc corrigé en ajoutant une implémentation pour le runtime de test uniquement. J'utilise gradle pour ce projet.
la source
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:
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
la source
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)
Code actuel
J'utilise bulkrequest et avec cela je supprime cette erreur.
la source