设为首页 加入收藏

TOP

Linux平台和Windows平台下Web Service加载JNI dll的区别
2014-11-24 11:55:11 来源: 作者: 【 】 浏览:0
Tags:Linux 平台 Windows 台下 Web Service 加载 JNI 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


查看变量结果


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇第一个QNX图形程序 下一篇测测你的Linux如何处理信号量?

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)
·深入浅出 C++ Lambda (2025-12-26 05:49:40)
·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)