Eclipse RCP插件中的多个slf4j绑定

我有一个简单的Eclipse插件,它让我在激活时出现以下错误:

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. 

两个URL都解析为捆绑中完全相同的jar

 libs/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class 
  • 我该如何解决这个问题?
  • 怎么捆绑jar加载jar子两次(“:1”和“:4”)?

这是在项目的类路径(JDT .classpath文件)和MANIFEST.MF文件中定义SLF4J绑定的结果。

您应该从项目的类路径中删除SLF4J绑定:

YourProject→属性→Java构建路径→库

  • 选择SLF4J绑定JAR并点击“删除”。

执行此操作后,在类加载器中应该只有一个对SLF4J绑定的引用(因此不应出现错误消息)。

对我来说,由于安装了插件,问题就出现了。 要找出它是哪一个..在调试eclipse实例的元数据中查找文件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可以解决问题:

在此处输入图像描述

如果您手动更改插件选择,请小心并使用validation插件function,以确保您不会创建其他问题。

这似乎解决了这个问题: SLF4J:类路径包含多个SLF4J绑定

如果没有,那么你在这条路上有两个不同版本的SLF4J吗?