`
JBossWeek
  • 浏览: 77995 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Native Library xxx.so already loaded in another classloader 的解决方法

阅读更多

1、症状

如果JBoss上的两个web应用需要使用相同的JNI本地库,当第二个web应用加载JNI本地库时,就会出现Native Library xxx.so already loaded in another classloader错误

2、原因

 Java虚拟机为了在JNI本地库中确保基于classloader的命名空间隔离,因而不允许一个JNI本地库被两个不同的classloader加载。而JBoss中web应用的classloader是独立的,也就是说每个web应用都有一个专属的classloader,这样就出现两个classloader加载同一JNI本地库的情况

3、解决方法

在JBoss AS中,虽然不同的web应用使用不同的classloader,但是web应用classloader的父classloader是相同的,这样根据双亲委托模型只要让父classloader加载JNI本地库就可以避免被多个classloader加载。父classloader的classpath为JBoss AS配置(default、all或minimal)的lib目录,因而只要将JNI class单独发布成jar包,并放在配置(default、all或minimal)的lib目录中,问题就可以解决



分享到:
评论
2 楼 huang_junfeng 2011-12-08  
tomcat中遇到同样问题,依次法可解决
1 楼 shania0127 2009-12-15  
  谢谢啦! 呵呵 看走了...

相关推荐

Global site tag (gtag.js) - Google Analytics