免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3846 | 回复: 3
打印 上一主题 下一主题

java加载so库的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-10 10:39 |只看该作者 |倒序浏览
我的java程序中加载了一个c写的so库,然后java作为api接口供php调用,现在遇到了一个问题,就是php调用java时,java会去连so库,然后第一次页面显示正常,再刷新就出现问题了,错误提示如下:
Fatal error: Uncaught [o(Exception):"java.lang.Exception: CreateInstance failed: new StreamFountJava.SFountAPI. Cause: java.lang.UnsatisfiedLinkError: Native Library /usr/lib/libsfount_api.so already loaded in another classloader"] thrown in /home/mbos/php_java.php on line 10
再刷新出现:
Fatal error: Uncaught [o(Exception):"java.lang.Exception: CreateInstance failed: new StreamFountJava.SFountAPI. Cause: java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError. -- Unable to call constructor because it or one of its parameters refer to the mentioned external class which is not available in the current "java_require()" url path. Remember that all interconnected classes must be loaded with a single java_require() call, i.e. use java_require("foo.jar;bar.jar") instead of java_require("foo.jar"); java_require("bar.jar"). Please check the Java Bridge log file for details."] thrown in /home/mbos/php_java.php on line 10

StreamFountJava.SFountAPI是我做的一个package,已将其打成.jar给php调用了,libsfount_api.so 是我的so库

第一次是显示正常的!
再次刷新产生的错误是由于第一个错误引起的,因为第一个错误提示说我的so库已经存在于其他的classloader中了,所以导致第二次刷新的时候出错,天呢,调用so库的不是同一个.jar里的class嘛

我的想法:能不能在java运行完释放掉so库?能释放吗?

顺便提一下无关的问题,我在VMware里的linux下执行刷新页面不会出错,只有重新将我的SFountAPi.class连同目录打包成.jar后才会出现上述问题,可是在纯正的linux环境下直接刷新就会出现这个问题,这是为什么?
PS:重启apache就能再正确显示一次

我用的是apache2+php5+php-java-bridge来完成php调用java的。

论坛徽章:
0
2 [报告]
发表于 2006-03-10 11:47 |只看该作者
你是把System.loadLibrary写在你的类的static {}中了么?如果是的话,恐怕是你的类在每次刷新页面的时候被不同的ClassLoader给加载了。我对Tomcat的ClassLoader的层次不熟

论坛徽章:
0
3 [报告]
发表于 2006-03-10 12:33 |只看该作者
我确实是把System.loadLibrary写在我的类的static {}里了,但是我也试过写在构造函数里,似乎得到的是同样的结果

我用的不是Tomcat,用的是Apache

论坛徽章:
0
4 [报告]
发表于 2006-03-10 14:25 |只看该作者
我对php-java bridge不是很熟悉。会不是java_require()的使用方法的问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP