2014-09-25 24 views
1

[我最初在websphere论坛上发布的这个bot没有看到及时的响应。我重新张贴在这里有稍微内容]websphere classloader在加载slf4j时给出java.lang.LinkageError LoggerFactory

的问题

我添加了一个罐子(称之为“foo.jar中”)给我们的企业应用程序(即“的.ear”),创建清单条目等,并发现,当我的EJB实例化FooClient时,websphere在org.slf4j.LoggerFactory上抛出java.lang.LinkageError

我已将类加载器调试添加到跟踪,没有发现太多。我希望看到“在哪里实际上找到了slf4j类”。这里是条目:

[9/24/14 16:23:01:417 CDT] 00000067 CompoundClass > loadClass org.slf4j.LoggerFactory [email protected][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似乎破坏了,因为当我将共享库与应用程序或模块关联时,它不会“保存”。它随后消失。提前

感谢

+0

给我们相关的代码,你是否在1.7.6中使用了1.5.6 slf4j api中不存在的新东西? – 2014-09-25 16:03:20

回答

0

检查由foo.jar中,你使用的是一个预期的版本SL4J的:他们是肯定不同的。确保在你的类路径中有正确的版本优先级:你可以把它放在WEB-INF/lib中,但也可以在WEB-INF/lib中检查它是否只有一个版本。

要发现你使用,你可以运行

java -verbose:class .... 

这SL4J罐子,JVM将转储出什么它加载,并从那里。

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

如果你想使用它已经存在了WebSphere PARENT_LAST新图书馆
1

是去

如果不是,从应用中移除SLF4J罐子,并使用由供应商提供的版本的方式

相关问题