加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Linux平台和Windows平台下Web Service加载JNI dll的差异

发布时间:2021-12-22 11:43:14 所属栏目:PHP教程 来源:互联网
导读:Web Service是由Java编写,部署在Tomcat上。 Web Service调用JNI DLL之前,需要加载该DLL,在生成WAR包的java工程中,可以使用System.load() 来加载外部DLL,但是必须写全路径,这样不利于跨平台。也可以使用函数System.loadLibrary()来加载外部DLL,只需要写
Web Service是由Java编写,部署在Tomcat上。 Web Service调用JNI DLL之前,需要加载该DLL,在生成WAR包的java工程中,可以使用“System.load()” 来加载外部DLL,但是必须写全路径,这样不利于跨平台。也可以使用函数"System.loadLibrary()"来加载外部DLL,只需要写文件名(省略后缀名)。如果找不到库,就会弹出 异常UnsatisfiedLinkError  no ***  in java.library.path
 
System.loadLibrary()函数在windows和linux平台下对库的查找有区别。
 
在Windows平台下,供Web Service调用的JNI DLL 为"JNI_KindleService.dll" , 假设该DLL位于 d:Test目录下。在将“JNI_KindleService.dll" 拷贝到系统环境变量PATH下的任何一个目录下,或者将“d:Test”追加到PATH环境变量里,然后就可以使   System.loadLibrary("JNI_KindleService");    加载该DLL,JDK会依次在PATH环境变量设置的各个目录下,依次查找后缀名为.dll,且文件名为JNI_KindleService的库,直到找到为止。
 
如果在Linux平台下,该DLL名称为 "libJNI_KindleService.so", 位于/home/lib目录下,
 
仍然使用    System.loadLibrary("JNI_KindleService");     来加载该DLL
 
在Linux下,系统会将System.loadLibrary()传入的文件名参数,补上前缀"lib",后缀名".so",然后在环境变量LD_LIBRARY_PATH里面设置的路径里,依次查找文件  "libJNI_KindleService.so"  直到在某个目录下能找到该文件为止。
 
可以在/etc/profile 内使用
 
export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lib
 
来将该DLL所在目录添加查找库的环境变量上
 
使用source  /etc/profile 让该变量对当前的shell生效
 
可以使用
 
echo  $LD_LIBRARY_PATH

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读