Java web 运行时访问不了.dll库

来源:互联网 发布:淘宝上买psv破解版 编辑:程序博客网 时间:2024/06/11 18:48

情景: 在demo和API开发手册中,在java项目中直接将dll文件直接放入项目的根目录下,运行可以顺利访问。但在java web里却访问不了,报ava.lang.Unsatisfie.lang.UnsatisfiedLinkError no injava.library.path

总结一下网上的一些解决方法:
一、知识补充:
**一般来说,在 Windows 下,系统加载共享库时的优先级将按以下的顺序:
1,应用的当前运行目录;
2,由系统环境参数 Path 指定的目录;
3,System32 目录;
而在Linux下,系统加载共享库时的优先级将按以下顺序:
1,LD_LIBRARY_PATH指定的目录;
2,/lib/ 和 /lib64/ 目录;**

方法一:
在Windows下,把 dll 文件,放在应用的当前运行目录(一般为应用所在的目录),或在 Path 把 dll 所在目录加入此环境参数中,或者把dll复制到 System32 目录(不建议);
在Linux下,则把 .so 所在目录,通过 export 加入 LD_PIBRARY_PATH 中(在Terminal或在“ .bashrc”等启动时会加载的脚本中),或把 .so 文件复制到 lib 文件夹中(不建议);(另外,确保linux的glibc版本为2.11以上;可以执行命令 ldd libmsc32.so <如64位系统,则命令为 ldd libmsc64.so>,如果有执行结果有`GLIBC_2.11\’ not found,则需要把 glibc 版本升级到2.11版)
如果集成布署的是 Web 项目,记得重启 WebServer 才会生效。
另外,在 Linux 下 eclipse 调试时,可能通过Terminal 来 export LD_PIBRARY_PATH 并不起作用,此时,因为运行的调试环境不在 Terminal 中,需要在项目属性中,设置调试和运行的环境参数,在其中,增加 LD_PIBRARY_PATH ,并指定 so 文件所在的目录,如下图为指定 so 所在目录为当前运行的目录:

方法二:
为了让程序加载到库文件,将dll文件放入Tomcat的bin文件目录下,在程序运行的初始化方法中调用System.loadLibrary(“文件名”)

详情参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=13258&highlight=java
http://www.cnblogs.com/zfc2201/archive/2011/09/02/2163268.html

0 0
原创粉丝点击