zoukankan      html  css  js  c++  java
  • 【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:\Users\Andy>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:\Work\helloworld\WebContent\WEB-INF\classes\TEST.dll':
    Native library (win32-x86/D:\Work\helloworld\WebContent\WEB-INF\classes\TEST.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进行检测,发觉确实少了依赖包。

     

    下载相关包安装即可。我这里,是安装【微软常用运行库合集-2021.04.07-X64.exe】,问题得到解决。

  • 相关阅读:
    Odoo开发教程15-管理 Odoo 数据库
    星辉信息科技Odoo开发教程14-源码安装 Odoo第三讲
    星辉信息科技Odoo开发教程13-源码安装 Odoo第二讲
    Odoo开发教程12-源码安装 Odoo
    星辉信息科技Odoo开发教程11-使用 Windows 子系统安装 Linux
    Metasploit 进阶
    Metasploit 一些重要模块使用介绍
    Metasploit 使用基础
    【译】Attacking XML with XML External Entity Injection (XXE)
    CentOS6 安装Sendmail + Dovecot + Roundcubemail
  • 原文地址:https://www.cnblogs.com/nayitian/p/15747551.html
Copyright © 2011-2022 走看看