我有一个简单的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.
这两个网址都解析为捆绑包中完全相同的jar
libs/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class
答案 0 :(得分:5)
这是在项目的类路径(JDT .classpath文件)和MANIFEST.MF文件中定义SLF4J绑定的结果。
您应该从项目的类路径中删除SLF4J绑定:
YourProject→属性→Java构建路径→库
- 选择SLF4J绑定JAR并点击“删除”。
一旦你这样做,你的类加载器中只应该有一个对SLF4J绑定的引用(因此不应出现错误信息)。
答案 1 :(得分:2)
对我来说,由于安装了插件,问题就出现了。要找出它是哪一个..在调试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可以解决问题:
如果您手动更改插件选择,请注意并使用验证插件功能,以确保您不会创建其他问题。
答案 2 :(得分:0)
这似乎解决了这个问题: SLF4J: Class path contains multiple SLF4J bindings
如果没有,那么你在这条路上有两个不同版本的SLF4J吗?