脚本宝典收集整理的这篇文章主要介绍了【java.lang.UnsatisfiedLinkError: 找不到指定的模块。】问题的解决,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Java程序引用C写的DLL动态库,出现如下错误:【java.lang.UnsatisfiedLinkError: 找不到指定的模块。】网上查询有三种可能导致此错误。
一、JDK版本问题。JDK64位对应DLL文件64位,JDK32位对应DLL文件32位。我的DLL是32位的,Windows系统是64位的,安装了JDK64位的版本和JDK32位的版本(兼容性考虑)。运行Java程序是在32位JDK上面进行的,这点可以通过java -d32 -version命令来获得证实:
C:UsersAndy>java -d32 -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) Client VM (build 25.144-b01, mixed mode)
如果当前Java是64位的JDK,上述命令会报错。
二、DLL路径有问题,比如绝对路径写错了。其实我引用DLL一直用相对路径,就是直接写DLL的文件名,然后把此DLL放到CLASSPATH之中,从来没出问题过。
因为此问题的出现,我改写成绝对路径,结果新的错误出来了:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'C:WorkhelloworldWebContentWEB-INFclassesTEST.dll': Native library (win32-x86/D:WorkhelloworldWebContentWEB-INFclassesTEST.dll) not found in resource path ([file:/D:/Work/helloworld/WebContent/WEB-INF/classes/......)
更何况,绝对路径就是拷贝粘贴的事儿,几乎不会出错;甚至通过
System.out.println(System.getProperty("java.library.path"));
命令检测,将DLL放置于指定目录(比如说JDK的BIN目录),问题同样出现;所以,问题不在这儿。
三、DLL文件依赖问题。
可以用depends.exe工具检测DLL文件的相关依赖。下载地址(官网):http://www.dependencywalker.com/,可以选择下载安装32位版的,或者是64位版本的。
运行工具对DLL进行检测,发觉确实少了依赖包。
下载相关包,或者在出问题的电脑上安装个开发环境,即可以解决问题。
以上是脚本宝典为你收集整理的【java.lang.UnsatisfiedLinkError: 找不到指定的模块。】问题的解决全部内容,希望文章能够帮你解决【java.lang.UnsatisfiedLinkError: 找不到指定的模块。】问题的解决所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。