再续java调用动态库so

过去有记录过:http://blog.csdn.net/wenjjing2lianee/archive/2010/04/28/5540053.aspx

 

上次写那篇文章是把Tomcat调用so动态库给解决了,本认为应该都OK了,没想到问题又来了,有公司偏偏不是用Tomat,而是WebSphere,好好的程序通过Tomcat能成功,而在WebSphere就是狂报错.错误如下:

Caused by: java.lang.UnsatisfiedLinkError: com/wd/XXXXXXXXXXXXXXX([B)[B(后面还有两个这东西)
 at com.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 at com.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 at com. at com.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX(LoginAction.java:81)
 ... 104 more

这个错,一看就知道,动态库so没加载进来啊,那边公司也在网上查了看了很多资料,网上很多的WebSphere加载动态库都试过了就是无法解决这个问题,整整弄了两天,终于找到了原因,原来是动态库so的问题。

 

对方用的是WebSphere7.0, WebSphere是IBM旗下的,并且自带了JDK,问题就出在Websphere自带的JDK上,如果是一个简单的java程序不须要调用动态库,在SUN JDK 编译后,放到IBM JDK中运行应该没问题,但如果是运用sun jdk头文件编译的动态库,放到IBM中去调用就不行了,一直报错也就是这个原因造成的,刚开始我们的动态库都是通过sun jdk头文件编译的,所以就算放入了WebSphere中容器也不会加载进来,后来没法子就自己装环境测试,自己装WebSphere环境时才认识到这个问题,改用IBM jdk头文件重新编译了so,才解决了问题.

装WebSphere环境发费了很长的时间,不过也学到了不少,在WebSphere下直接将so放到安装目录的bin/下容器就会自动加载.

 

提供几个关于WebSphere的连接

在 UNIX 和 Linux 系统上安装和配置 WebSphere Application Server

 

websphere7.0安装界面乱码

 

 

 

 

 

 

 

你可能感兴趣的:(月牙儿)