Предупреждение slf4j о том же дубликате

SLF4J жалуется на множественные привязки, но они выглядят одинаково:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [zip:C:/bea_domains/my_service_domain/servers/AdminServer/tmp/_WL_user/my-shared-app-lib/obaz3z/APP-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [zip:C:/bea_domains/my_service_domain/servers/AdminServer/tmp/_WL_user/my-shared-app-lib/obaz3z/APP-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

Есть ли способ избавиться от этого предупреждения? Что может быть причиной этого?

3 ответа

Решение

В настоящее время идет обсуждение ошибки 138, которая кажется мне идентичной проблеме, о которой вы сообщили. Согласно обсуждению, "проблема была, на самом деле, в нескольких пути к классам в манифестах - если было больше, чем EJB jar с привязкой в ​​списке, WLS предоставлял полный список из них. Даже если класс был таким же. Это относится и к ClassLoader поведение в WLS. Если вы действительно хотите удалить это предупреждение (хотя и не смертельное), в баге есть вложение, вы, вероятно, можете исправить с ним slf4j.

Ошибка 138 была исправлена ​​в slf4j 1.6.2 теперь:-). http://www.slf4j.org/news.html

Помимо проблемы с несколькими путями классов, описанной в ответе Jasonw, эта проблема также может быть вызвана фреймворком PowerMock.

PowerMock использует собственный загрузчик классов (MockClassLoader), который использует собственный механизм для делегирования загрузчику родительского класса. Это также может привести к ClassLoader.getResources() возвращать один и тот же ресурс дважды, что вызывает предупреждение.

Кажется, это вызвано изменениями, описанными в проблеме 380 PowerMock.

Исправление для #138 в SLF4J (ссылка выше) также решает эту проблему, поэтому в SLF4J 1.6.2+ она больше не должна возникать.

Другие вопросы по тегам