遇到问题:
今天在用户现场使用JNI调用同事封装好的DLL时,出现报错
java.lang.UnsatisfiedLinkError: no xxx in java.library.path
从字面上的理解是没有加载到这个DLL文件。
问题排查:
加载代码如下:
System.loadLibrary("callDll");
意思是加载名字叫“callDll”的动态链接库
其实还有另外一种写法
System.load("C:\\Windows\\SysWOW64\\callDll.dll");
上面为绝对路径的写法,个人觉得不适合用户线上环境使用
还是采用第一种让他自动搜索匹配的好一点
那么为什么没有搜索到呢?
可以用另一个方法查看loadLibrary到底是去哪里去找DLL了
System.out.println(System.getProperty("java.library.path"));
可以查看当前系统查询dll的目录是哪里
然后把DLL扔到他去寻找的路径里面去就可以解决了
我是扔到Tomcat的bin目录中下就可以执行了