【问题标题】:websphere classloader gives java.lang.LinkageError when loading slf4j LoggerFactorywebsphere 类加载器在加载 slf4j LoggerFactory 时给出 java.lang.LinkageError
【发布时间】:2014-09-25 15:25:38
【问题描述】:

[我最初在 websphere 论坛机器人上发布了这个,没有看到及时的回复。我在这里重新发布,内容略多一些]

问题

我向我们的企业应用程序(即“.ear”)添加了一个 jar(称为“Foo.jar”),创建了清单条目等,令我惊讶的是,当我的 EJB 实例化 FooClient 时, websphere 在 org.slf4j.LoggerFactory 上抛出了 java.lang.LinkageError

我在跟踪中添加了类加载器调试,但没有找到太多。我希望看到“WAS 实际上在哪里找到了 slf4j 类”。以下是条目:

[9/24/14 16:23:01:417 CDT] 00000067 CompoundClass >  loadClass org.slf4j.LoggerFactory this=com.ibm.ws.classloader.CompoundClassLoader@5c2687e4[app:yourappServer] Entry

[9/24/14 16:23:01:418 CDT] 00000067 CompoundClass <  loadClass org.slf4j.LoggerFactory java.lang.LinkageError: org.slf4j.LoggerFactory Exit

我检查了我的 was8 目录,发现了 slf4j jar 的各种副本/版本。

/plugins
        /osgiappbundles/com.ibm.ws.osgi.applications/aries/slf4j-api-1.5.6.jar
        /slf4j-api-1.5.6.jar

/profiles/AppSrv01
        /installedConnectors/activemq-rar-5.9.1.rar/slf4j-api-1.7.5.jar
        /wstemp
                /appdepl14769b0c2de/slf4j-api-1.7.5.jar3472682177251273594.tmp
                /appdepl14769b0c2de/slf4j-api-1.7.5.jar7922145899030561292.tmp

另一位开发人员告诉我“您将无法使用 Foo.jar”,因为我们需要放置“Parent_last”,而目前该项目不支持此选项。

附加上下文

  • Websphere 8.0.0.7
  • RAD 9

问题

  • java.lang.LinkageError:这是一个“类加载器问题”还是“类的错误版本”问题?我对“错误版本的类”问题的体验我通常会看到“NoSuchMethod”错误,而不是实例化异常。

  • 还有其他方法吗?

更新

我阅读了一些关于共享库和“隔离类加载器”的信息,这似乎是解决方案。但是由于某种原因,当我将共享库与应用程序或模块相关联时,我的 RAD/Eclipse UI 似乎损坏了,因为它没有“保存”。它随后消失了。

提前致谢

【问题讨论】:

  • 给我们相关的代码,你是不是在使用 1.5.6 slf4j api 中不存在的 1.7.5 中的新东西?

标签: java websphere classloader slf4j


【解决方案1】:

如果您想使用 websphere 中已有的较新库 parent_last 是要走的路

如果没有,请从应用程序中删除 slf4j jar,并使用供应商提供的版本

【讨论】:

    【解决方案2】:

    检查 Foo.jar 预期的 SL4J 版本和您正在使用的版本:它们肯定是不同的。确保正确的版本在您的类路径中具有优先权:您可以将其放在 WEB-INF/lib 中,但也可以检查您在 WEB-INF/lib 中是否只有一个版本。

    要发现您正在使用的 SL4J jar,您可以运行

    java -verbose:class ....
    

    JVM 会转储它正在加载的内容,以及从哪里加载。

    你说“我通常会看到 NoSuchMethod 错误”而不是 LinkageError;在这种情况下,该方法存在,但有一些其他的不兼容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      相关资源
      最近更新 更多