【发布时间】: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