程序笔记   发布时间:2022-07-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【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: 找不到指定的模块。】问题的解决全部内容,希望文章能够帮你解决【java.lang.UnsatisfiedLinkError: 找不到指定的模块。】问题的解决所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:php