【问题标题】:multiple slf4j bindings in Eclipse RCP PluginEclipse RCP 插件中的多个 slf4j 绑定
【发布时间】:2013-09-14 07:03:52
【问题描述】:

我有一个简单的 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 两次(“:1”和“:4”)?

【问题讨论】:

    标签: java osgi eclipse-rcp slf4j


    【解决方案1】:

    这似乎解决了问题: SLF4J: Class path contains multiple SLF4J bindings

    如果没有,那条路径上是否有两个不同版本的 SLF4J?

    【讨论】:

    • 这并不能解决问题,因为我不使用 maven 来构建类路径。在这个问题中还有两个不同的 jar(1.6.1 和 1.6.4),我的问题是完全相同的 jar 在类路径上出现了两次。
    • bundlesource 协议使用“端口号”来区分不同的 jar。在您的情况下,jar 1 和 4 都包含 org/slf4j/impl/StaticLoggerBinder.class。您的应用程序中是否包含其他一些 slf5j/logback/someotherlogger jar?
    • 该包在运行时类路径中包含 4 个 jar,slf4j-api、log4j、slf4j-log4j12 和一个带有一些内部帮助程序类的 jar。端口 1 和 4 都解析为 slf4j-log4j12.jar。使用 FileLocator 测试。
    【解决方案2】:

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

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

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

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

    一旦你这样做了,你的类加载器中应该只有一个对 SLF4J 绑定的引用(因此不应该出现错误消息)。

    【讨论】:

      【解决方案3】:

      对我来说,问题是由于安装了插件而发生的。要找出它是哪一个.. 在调试 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 成功了:

      如果您手动更改插件选择,请小心并使用验证插件功能确保不会产生其他问题。

      【讨论】:

      • SavedExternalPluginList.txt 文件位于“调试”eclipse 的工作区中。感谢您指向此文件
      猜你喜欢
      • 2016-03-12
      • 2020-12-24
      • 2020-06-07
      • 2018-07-10
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      相关资源
      最近更新 更多