JAVA && java.lang.UnsatisfiedLinkError: The specified module could not be found.找不到指定模块

目录

1. 前言

java对接C,引用到了 jna,报出如下错误

java.lang.UnsatisfiedLinkError: The specified module could not be found.

Exception in thread "main" java.lang.UnsatisfiedLinkError: The specified module could not be found.
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.Native.open(Native.java:1759)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.<init>(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)
Exception in thread "main" java.lang.UnsatisfiedLinkError: 找不到指定模块.
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.Native.open(Native.java:1759)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.<init>(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)

2. 思路

各种百度 google 所有方法都试了,错误还是没法解决。
项目源码 如下图 dll 动态执行库
java.lang.UnsatisfiedLinkError出现这种错误的原因是一般是java虚拟机找不到声明为native方法的本地语言定义时,出现的错误。在我的理解过程中我一般都认为是由于导入dll或者导入lib文件不正确导致的.
遂思路转向 gtp.dll 的依赖 参考github tess4j issues发现神器 Dependency Walker

在这里插入图片描述

3. 神器 Dependency Walker

Dependency Walker 官方网站http://www.dependencywalker.com/
Dependency Walker 是 Microsoft Visual C++ 中提供的非常有用的 PE 模块依赖性分析工具。主要功能如下:
查看 PE 模块的导入模块。
查看 PE 模块的导入和导出函数。
动态剖析 PE 模块的模块依赖性。
解析 C++ 函数名称。
Dependency Walker 使用说明 http://www.dependencywalker.com/help/html/contents.htm

在这里插入图片描述

下载好了之后

在这里插入图片描述


打开 depends.exe

左上角 file --》 open --》 选择 调用的 dll 文件

在这里插入图片描述

果不其然发现动态库组件 缺失 黄色叹号

在这里插入图片描述

4. 下载 dll文件

在这里插入图片描述

4.1 下载UCRTBASED.DLL

参考如何解决vs2015运行缺少ucrtbased.dll的问题下载UCRTBASED.DLL
https://jingyan.baidu.com/article/1e5468f96a8048484861b711.html

4.1.1 搜索UCRTBASED.DLL

在这里插入图片描述

4.1.2 下载保存UCRTBASED.DLL

在这里插入图片描述

在这里插入图片描述

4.1.3 解压到指定目录

在这里插入图片描述

  • 1、Windows 95/98/Me系统,将ucrtbased.dll复制到C:\Windows\System目录下。
  • 2、Windows NT/2000系统,将ucrtbased.dll复制到C:\WINNT\System32目录下。
  • 3、Windows XP/WIN7/win10系统
    如果您的系统是 64位 的请将ucrtbased.dll文件复制到C:\Windows\SysWOW64目录下,
    如果您的系统是 32位 的请将ucrtbased.dll文件复制到C:\Windows\System32目录下。
    具体的方法可以参考这篇文章:win7 64位旗舰版系统运行regsvr32.exe提示版本不兼容

安装所有依赖

参考 第四部下载 dll文件安装所有依赖

在这里插入图片描述

结束


java.lang.UnsatisfiedLinkError: Could not load SWT library是一个常见的错误,它表示在加载SWT库时出现了问题。这个错误通常有以下几个原因: 1. 缺少SWT库:这个错误可能是由于缺少SWT库文件引起的。SWT是一个用于构建Java图形用户界面的工具包,它需要与操作系统和Java虚拟机兼容的本机库文件。如果缺少这些库文件,就会导致加载失败并出现UnsatisfiedLinkError错误。 2. 错误的SWT库版本:如果使用的SWT库版本与操作系统或Java虚拟机不兼容,也会导致加载失败并出现UnsatisfiedLinkError错误。确保使用与操作系统和Java虚拟机兼容的SWT库版本。 3. 错误的库路径:如果SWT库文件没有正确配置到Java虚拟机的库路径中,也会导致加载失败并出现UnsatisfiedLinkError错误。确保将SWT库文件正确配置到java.library.path系统属性中。 解决这个错误的方法包括: 1. 检查SWT库文件是否存在:确保SWT库文件存在于系统中,并且与操作系统和Java虚拟机兼容。 2. 检查SWT库文件的版本:确保使用与操作系统和Java虚拟机兼容的SWT库版本。 3. 配置库路径:将SWT库文件所在的路径添加到java.library.path系统属性中,以便Java虚拟机能够到并加载它。 4. 检查依赖项:如果SWT库依赖于其他库文件,确保这些库文件也存在于系统中,并且与操作系统和Java虚拟机兼容。 5. 检查环境变量:如果SWT库依赖于环境变量,确保这些环境变量已正确设置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dendysan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值