2013-09-10 3 views
7

У меня есть простой плагин Eclipse, который дает мне следующее сообщение об ошибке при активации:несколько привязок SLF4J в Eclipse RCP плагин

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [bundleresource://103.fwk8918249:1/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [bundleresource://103.fwk8918249:4/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 

оба адреса преобразовываться в точно такую ​​же банку в комплекте

libs/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class 
  • Как я могу решить проблему?
  • Как получилось, что пучок загружает кувшин дважды («: 1» и «: 4»)?

ответ

0

Это, кажется, решить эту проблему: SLF4J: Class path contains multiple SLF4J bindings

Если нет, то у вас есть две разные версии SLF4J на этом пути?

+0

Это не решит проблему, так как я не использую maven для создания пути к классам. Также в этом вопросе есть два разных баночки (1.6.1 и 1.6.4), моя проблема в том, что тот же самый jar дважды в пути к классам. –

+0

Протокол bundlesource использует «portnumbers», чтобы различать разные банки. В вашем случае это будет jar 1 и 4, которые содержат как org/slf4j/impl/StaticLoggerBinder.class. Вы используете какой-либо другой slf5j/logback/someotherlogger jar в своем приложении? – Calon

+0

Пучок содержит 4 баночки в пути выполнения, slf4j-api, log4j, slf4j-log4j12 и банку с некоторыми внутренними вспомогательными классами. Порты 1 и 4 разрешают как slf4j-log4j12.jar. Протестировано с помощью FileLocator. –

5

Это результат определения привязки SLF4J как в пути к классу проекта (файл JDT .classpath), так и в файле MANIFEST.MF.

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

YourProject → → Свойства Java сборки Путь → Библиотеки

  • Выберите Binding JAR SLF4J и нажмите 'Удалить'.

После того, как вы сделаете это, должно быть только одной ссылки на ваш SLF4J связывание в вашем классе загрузчика (и, таким образом, сообщение об ошибке не должно появиться).

1

Для меня проблема возникла из-за установленного плагина. Чтобы узнать, какой из них. .. найдите файл SavedExternalPluginList.txt, например.

runtime-EclipseApplication\.metadata\.plugins\org.eclipse.pde.core\SavedExternalPluginList.txt 

и поиск slf4j. Таким образом, вы получаете представление о том, какие плагины могут нести ответственность. Я нашел следующие данные:

file:/D:/EclipseJava/App/Eclipse/plugins/ch.qos.logback.slf4j_1.0.7.v201505121915.jar 

file:/D:/EclipseJava/App/Eclipse/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.7.0.20160603-1931/ 

file:/D:/EclipseJava/App/Eclipse/plugins/org.slf4j.api_1.7.2.v20121108-1250.jar 
file:/D:/EclipseJava/App/Eclipse/plugins/org.slf4j.impl.log4j12_1.7.2.v20131105-2200.jar 

отключив плагин ch.qos.logback.slf4j для моей целевой платформы сделал трюк:

enter image description here

Если вручную изменить выбор плагинов, пожалуйста, будьте осторожны и используйте Подтвердите плагины, чтобы убедиться, что вы не создаете другие проблемы.

Смежные вопросы