Мое приложение должно быть развернуто как на tcServer, так и на WebSphere 6.1. Это приложение использует ehCache и поэтому требует slf4j в качестве зависимости. В результате я добавил jar-файл slf4j-api.jar (1.6) в свой пакет военных файлов.
Приложение прекрасно работает в tcServer за исключением следующей ошибки:
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.
Однако при развертывании в WebSphere я получаю java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder
.
Также сопровождается Failed to load class "org.slf4j.impl.StaticMDCBinder"
Я проверил пути к классам обоих серверов приложений, и нет другого jar slf4j.
У кого-нибудь есть идеи, что здесь может происходить?
Ответы:
У меня была такая же проблема с WebSphere 6.1. Как указал Ceki, WebSphere использовал тонны фляг, и один из них указывал на старую версию slf4j.
Отказ No-Op происходит только с slf4j -1.6+, поэтому все, что старше этого, вызовет исключение и остановит ваше развертывание.
На сайте SLf4J есть документация, которая решает эту проблему . Я проследил за этим и добавил
slf4j-simple-1.6.1.jar
в свое заявление,slf4j-api-1.6.1.jar
которое у меня уже было.Это решило мою проблему. Надеюсь, это поможет другим, у кого есть эта проблема.
источник
Это для тех кто пришел сюда из гугл поиска.
Если вы используете Maven, просто добавьте следующее
Или
источник
slf4j-simple
не быть той же версией, что иslf4j-api
? Вероятно, они будут хорошо работать вместе, но я думаю, что в целом безопаснее и эффективнее использовать их в одной и той же версии. Кроме того, если вам нужно включить ведение журнала только для консоли, например, при запуске модульных тестов, то этогоslf4j-simple
будет достаточно (хотя это было для меня).Просто добавьте это в ваш pom.xml :
источник
<groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>
и проблема была решенаВам необходимо добавить следующие JAR - файл в вашем пути к классам:
slf4j-simple-1.6.2.jar
. Если у вас его нет, пожалуйста, загрузите его. Пожалуйста, обратитесь к http://www.slf4j.org/codes.html#multiple_bindingsисточник
jul-to-slf4j
в моемpom.xml
и только что добавилslf4j-simple
в ранее, и это прекрасно работает.Несколько ответов здесь рекомендуют добавить зависимость slf4j-simple в файл maven pom. Вы можете проверить наличие самой последней версии.
На https://mvnrepository.com/artifact/org.slf4j/slf4j-simple вы найдете последнюю версию простой привязки SLF4J. Выберите тот, который подходит вам лучше (по-прежнему 1.7.26 из 2019-02 - это стабильная версия по состоянию на 2019-07) и включите его в ваш pom.xml.
Для вашего удобства здесь показаны некоторые зависимости, но они могут быть неактуальными, когда вы читаете это!
Альфа-версия 2019-10
Бета-версия февраля 2019
Стабильная версия 2019-12
Я удалил часть теста области благодаря комментарию ниже.
источник
<scope>test</scope>
? По моему опыту, мне, по крайней мере, нужнаruntime
область, чтобы убедиться,slf4j-simple
что путь к классу находится. Любопытно, как ты заставил это работать только сtest
прицелом ...Я столкнулся с той же ошибкой. Я настроил slf4j-api, slf4j-log4j12 и log4j в моей локальной разработке. Все настройки были в порядке, но зависимость slf4j-log4j12, которую я скопировал из mvnrepository, имела тестовую область
<scope>test</scope>
. Когда я удалил это все хорошо.Иногда глупые ошибки ломают нам голову;)
источник
Когда-нибудь мы должны увидеть записку от предупреждения
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
.Вы можете найти причину, по которой приходит это предупреждение.
Добавив одну из банку из
*slf4j-nop.jar
,slf4j-simple.jar
,slf4j-log4j12.jar
,slf4j-jdk14.jar
илиlogback-classic.jar*
в пути класса должно решить эту проблему.например, добавьте приведенный выше код к вашему
build.gradle
или соответствующему кpom.xml
для проекта maven.источник
положить файл
slf4j-log4j12-1.6.4.jar
в classpath сделает свое дело.источник
Если вы используете maven для управления зависимостями, вы можете просто добавить следующую зависимость в pom.xml
Для пользователей не Maven Просто скачайте библиотеку и поместите ее в classpath вашего проекта.
Здесь вы можете увидеть подробности: http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/
источник
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
Ищите комментарий sarxos как упомянуто @Paul, нужно добавить logback-classic. Другой подход к изменению<artifactId>slf4j-simple</artifactId>
от<artifactId>slf4j-api</artifactId>
также делает работу. Это иллюстрировано здесьSLF4j - это абстракция для различных каркасов логирования . Следовательно, помимо наличия slf4j, вы должны включить в ваш путь к классам любой из ваших каркасов ведения журналов, таких как log4j или logback (и т. Д.).
Чтобы иметь идею, обратитесь к Первому шагу ребенка в http://logback.qos.ch/manual/introduction.html
источник
Slf4j - это фасад для базовых каркасов журналирования, таких как log4j, logback, java.util.logging.
Чтобы соединиться с базовыми платформами, slf4j использует привязку.
Вышеуказанная ошибка выдается, если отсутствует переплет банок. Вы можете скачать эту банку и добавить ее в classpath.
Для Maven зависимости,
Эта зависимость в дополнение к slf4j-log4j12-1.7.21.jar, она будет тянуть как slf4j-api-1.7.21.jar, так и log4j-1.2.17.jar в ваш проект
Ссылка: http://www.slf4j.org/manual.html
источник
Я столкнулся с подобной проблемой в приложениях Spring-boot-2 с библиотекой Java 9.
Добавление следующей зависимости в моем pom.xml решило проблему для меня:
источник
В случае Websphere у вас есть более старая версия slf4j-api.jar, 1.4.x. или 1.5.х где-то валяется. Поведение, которое вы наблюдаете на tcServer, то есть переключении на NOP, происходит в slf4j версий 1.6.0 и новее. Убедитесь, что вы используете slf4j-api-1.6.x.jar на всех платформах, и что более старая версия slf4j-api не размещена в пути к классам.
источник
Я попал в эту проблему, когда я получаю следующую ошибку:
когда я использовал
slf4j-api-1.7.5.jar
в моемlibs
.Inspite я попытался со всем предложенным комплемента банки, как
slf4j-log4j12-1.7.5.jar
,slf4j-simple-1.7.5
сообщение об ошибке по- прежнему сохраняется. Проблема, наконец, была решена, когда я добавилslf4j-jdk14-1.7.5.jar
в Java-библиотеки.Получить весь пакет slf4j можно по адресу http://www.slf4j.org/download.html.
источник
Пожалуйста, добавьте следующие зависимости в pom для решения этой проблемы.
источник
Как альтернатива включению банок и чистым решениям maven, вы можете включить его из maven с gradle.
Пример для версии
1.7.25
Поместите это в зависимости вашего
build.gradle
файла.источник
Я работаю в проекте Struts2 + Spring. Так что нужна зависимость
slf4j-api-1.7.5.jar
.Если я запускаю проект, я получаю ошибку как
Не удалось загрузить класс "org.slf4j.impl.StaticLoggerBinder"
Я решил свою проблему, добавив
slf4j-log4j12-1.7.5.jar
.Поэтому добавьте эту банку в свой проект, чтобы решить проблему.
источник
Как SLF4J Руководство государств
а также
Поэтому вы должны выбрать, какую привязку вы хотите использовать.
NoOp привязка (slf4j-nop)
Проверьте свежую версию на https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-nop&core=gav
Простое связывание (slf4j-simple)
Проверьте свежую версию на https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-simple&core=gav
Привязки для каркасов ведения журналов (java.util.logging, logback, log4j)
Вам нужна одна из этих привязок, если вы собираетесь записывать журнал в файл.
См. Описание и инструкции по адресу https://www.slf4j.org/manual.html#projectDep.
Мое мнение
Я бы порекомендовал Logback, потому что он является преемником log4j проекта .
Проверьте последнюю версию привязки для этого на https://search.maven.org/search?q=g:ch.qos.logback%20AND%20a:logback-classic&core=gav
Вы получаете консольный вывод из коробки, но если вам нужно записать логи в файл, просто поместите
FileAppender
конфигурацию вsrc/main/resources/logback.xml
илиsrc/test/resources/logback-test.xml
просто так:(Подробное описание см. В руководстве: https://logback.qos.ch/manual/configuration.html ).
источник
Поместите вышеупомянутую зависимость в файл pom.xml
источник
Я добавил эту зависимость для решения этой проблемы:
источник
Согласно официальной документации SLF4J
Просто добавьте этот jar вместе с slf4j api.jar в ваш classpath, чтобы добиться цели. Удачи
источник
Я решаю это, добавив эту библиотеку: slf4j-simple-1.7.25.jar Вы можете скачать это на официальном веб-сайте https://www.slf4j.org/download.html
источник
столкнулся с такой же проблемой на паяре 5.191
jcl-over-slf4j вместе с slf4j-log4j12 решили проблему
источник
Я знаю, что этот пост немного староват, но в случае, если кто-то еще столкнется с этой проблемой:
Добавьте slf4j-jdk14-XXXjar к CLASSPATH (где XXX - номер версии - например, slf4j-jdk14-1.7.5.jar).
HTH Питер
источник
Я использую Йену, и я добавляю стипендию зависимость в pom.xml
Я пытаюсь добавить slf4j-simple, но при этом просто исчезает ошибка «SLF4J: Не удалось загрузить класс« org.slf4j.impl.StaticLoggerBinder »», но logback-classic показывает более подробную информацию.
Официальный документ
источник
решение указано на их официальном сайте:
Решение: я добавил в свой проект, используя maven исследования по intellij, и выбрал slf4j-jdk14.jar.
источник
Скорее всего, ваша проблема была из-за
<scope>test</scope>
(в некоторых случаях также<scope>provided</scope>
), как упоминалось @thangaraj .Документация гласит:
Итак, если вам не нужны зависимости для тестирования, вы можете использовать вместо (то, что вы увидите в mvnrepository ):
Без каких-либо областей (по умолчанию будет область компиляции, если не предоставлена другая область):
Это так же, как:
источник
Вот мои 5 центов ...
У меня были те же проблемы при выполнении тестов. Поэтому я исправил это, добавив реализацию только для тестовой среды выполнения. Я использую Gradle для этого проекта.
источник
Для меня проблема заключалась в следующем: используя Hibernate, я увидел, что он уже использовал slf4j, и он уже был в моем classpath, поэтому я решил использовать его. Следующий шаг - добавление imlementor для slf4j, поэтому я добавил в maven:
Но это не удалось с ошибкой! SLF4J: не удалось загрузить класс «org.slf4j.impl.StaticLoggerBinder»
Решение было таким: Hibernate-зависимость slf4j была версией 1.7.26 , и я добавил минор-версию 1.7.25 . Так что когда я это исправил - все стало ОК
источник
Я не добавил никаких зависимостей, я просто изменил способ их потребления.
Предварительный код
(Раскомментируйте этот код, если вы используете версию с эластичным поиском <7.0)
Текущий код
Я использую массовый запрос и с этим я удаляю эту ошибку.
источник