2013-02-12 4 views
1

Это более или менее «общий» вопрос, однако мне пока не удалось найти хороший ответ. Так, опять же, здесь есть предупреждение:Как избавиться от предупреждения «Путь класса содержит несколько привязок SLF4J»?

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/eualin/.m2/repository/org/slf4j/slf4j-jcl/1.6.0/slf4j-jcl-1.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/eualin/.m2/repository/org/slf4j/slf4j-log4j12/1.5.11/slf4j-log4j12-1.5.11.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 

А вот два возможных пути решения проблемы [1][2].

Предполагая, что они оба будут работать для меня, очевидно, что они просто хаки, и я не уверен, что я должен полагаться на кого-либо из них вообще. Что бы вы мне порекомендовали? Имейте в виду, что предупреждение не появляется в терминале; только когда я запускаю приложение через IntelliJIDEA.

Любое предложение высоко ценится.

ответ

3

SLF4J ожидает, что только одна версия StaticLoggerBinder будет присутствовать в любой среде выполнения приложений. Если их больше одного, SLF4J не может гарантировать, что сообщения журнала будут перенаправлены в соответствующий регистратор.

Архитектура SLF4J требует, чтобы для маршрутизации сообщений журнала использовалась только одна библиотека (например, slf4j-<logging framework>.jar). Когда несколько классов классов находятся в игре через серверы приложений, IDE, сценарии запуска и т. Д., Библиотеки SLF4J могут включаться несколько раз. Возможно, вам придется охотиться и клевать, чтобы найти, где classpath либо добавляются, либо модифицируются в IntelliJIDEA (например, в настроенных компиляторах Java или в любых конфигурациях запуска).

2

Это, по-видимому, происходит потому, что IntelliJIDEA добавляет один из этих самих slf4j JAR. Моя догадка происходит, когда вы запускаете модульные тесты. Таким образом, один из подходов мог бы увидеть, если вы можете исключить другой JAR в конфигурациях запуска для тестового бегуна Unit.

Но в конце дня это предупреждение безвредно, и вы можете просто игнорировать его.

+0

Нет, я не пытаюсь запустить модульный тест для этого приложения; Я просто пытаюсь запустить приложение самостоятельно. В конце я, вероятно, проигнорирую его, могу ли я спросить вас о дальнейших идеях о том, как избавиться от него, желательно, не касаясь другого файла jar? – user706838

+0

Это, безусловно, проблема с классом пути выполнения. Вы должны убедиться, что IntelliJIDEA не ставит оба JAR в classpath при запуске приложения. Я бы начал с просмотра файла POM и зависимостей, которые он задает. –

0

В моем конкретном случае, я получил эту ошибку в IntelliJ IDEA и освежающий Gradle устранил эту ошибку:

enter image description here

Вы можете найти это окно из View..Tool Windows..Gradle.

Наша установка:

  • IntelliJ IDEA v15
  • Gradle
  • Дженкинс
  • СВН
Смежные вопросы