【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进行检测,发觉确实少了依赖包。

【java.lang.UnsatisfiedLinkError: 找不到指定的模块。】问题的解决

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

Original: https://www.cnblogs.com/nayitian/p/15747551.html
Author: 那些年的事儿
Title: 【java.lang.UnsatisfiedLinkError: 找不到指定的模块。】问题的解决

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536719/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • JDK源码分析实战系列-ThreadLocal

    公众号原文链接* 总览 ThreadLocal提供了线程局部变量的解决方案。 我们知道成员变量在多线程下是不安全的,而局部变量的生命周期又取决于变量定义的范围。那么有没有一个变量定…

    Java 2023年6月13日
    057
  • redis

    Nosql概述 因为数据的访问量越来越大,单靠关系型数据库已经无法支撑用户需求,所以架构也在用户的需求下一步步进行演进。 1、单机Mysql时代 90年代,一个网站的访问量一般不会…

    Java 2023年6月9日
    075
  • 3.Spring IoC阐述

    控制反转的概念:控制反转是一种通过描述(在Java中可以是XML或者注解)并通过第三方去产生或获取特定对象的方式. 在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入…

    Java 2023年6月9日
    085
  • 【Java基础】初始化模块和静态初始化模块

    在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。 需要特别注意:静态初始化块只在类加载时执行…

    Java 2023年5月29日
    086
  • vue-i18n 初体验

    vue-i18n 初体验 使用vue,如何国际化呢?采用 vue-i18n。(i18n,internationalization,i和n中间省略18个字符) vue-i18n 官网…

    Java 2023年6月5日
    081
  • 【Java分享客栈】我曾经的两个Java老师一个找不到工作了一个被迫转行了

    前言 写这篇文章的初衷主要是最近发生了两件事,让我感慨良多,觉得踏入这个行业的初始,有些事情就应该长远考虑,这样对职业发展才更有利,仅仅停留在技术的追求上固然能壮大自身,可逆水行舟…

    Java 2023年6月9日
    044
  • 基于Spring aop写的一个简单的耗时监控

    前言:毕业后应该有一两年没有好好的更新博客了,回头看看自己这一年,似乎少了太多的沉淀了。让自己做一个爱分享的人,好的知识点拿出来和大家一起分享,一起学习。 背景: 在做项目的时候,…

    Java 2023年5月30日
    064
  • 以逗号分割的字符串和数组之间来回转换的方法

    数组转字符串用逗号分割 String[] arr = [“1″,”2″,”3″,”4&#8243…

    Java 2023年6月14日
    078
  • Nginx alias root 和 try_files 基本使用

    请求都用域名 root Syntax: root path; Default: root html; Context: http, server, location, if in …

    Java 2023年5月30日
    072
  • 异常

    spring框架中 获取bean时 1.NoUniqueBeanDefinitionException:没有一个唯一的bean被发现异常 原因:ioc中有多个类型匹配的bean 2…

    Java 2023年6月16日
    0106
  • Java 根据XPATH批量替换XML节点中的值

    根据XPATH批量替换XML节点中的值 by: 授客 QQ:1033553122 测试环境 JDK 1.8.0_25 代码实操 _message.xml_文件 xxxxxxxxxx…

    Java 2023年6月16日
    0105
  • 虚拟机最小化安装centos7.5后,如何配置centos的固定ip

    目前宿主机:只能动态获取ip 虚拟机配置为NAT模式: 查看虚拟机编辑->虚拟网络编辑器: 查看宿主机 VMnet8的状态详细信息: 下面进入配置: 首先设置centos的固…

    Java 2023年5月30日
    091
  • java_异常机制(二)

    1.异常对象处理完之后会怎样: 异常处理对象在异常处理完后,没有引用指向它,变成了不可达对象,Exception对象会在下一个垃圾回收过程中被回收掉。 它将在接下来JVM进行gc操…

    Java 2023年6月5日
    088
  • Java的报错解决: Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

    我们在学习mybatis中会出现Communications link failure报错,我当时找了一天都没有找到合适的解决方案 Sun Aug 07 08:30:43 CST …

    Java 2023年6月5日
    0125
  • 网络编程(inetAddress类的概述和使用—-UDP发送和接受数据)

    如果一个类没有构造方法: A:成员全部是静态的(Math,Arrays,Collections) B:单例设计模式(Runtime) C:类中有静态方法返回该类的对象(InetAd…

    Java 2023年6月5日
    099
  • windows系统cmd切换盘符路径命令失效

    问题描述:比如当我在C盘想切换到D盘的某个文件夹路径下时 只是输出了那个路径 但是并没有真的切换 这时候需要再多操作一步就会成功了 Original: https://www.cn…

    Java 2023年6月15日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球