JNA异常java.lang.UnsatisfiedLinkError: Unable to load library处理方法

今日遇到此问题:JNA异常java.lang.UnsatisfiedLinkError: Unable to load library

代码如下:

public class IcMultiApp implements IIcMultiApp{


public interface IIcMultiApp extends Library {

String sep = File.separator;

IIcMultiApp INSTANCE = (IIcMultiApp)Native.loadLibrary("."+sep+"driver"+sep+"scms", IIcMultiApp.class);
public int PBOC20_HT_READINFO(byte[] s1,byte[] s2,byte[] s3,byte[] s4);
public int PBOC20_HT_WriteScriptFromFile(String s0,byte[] s1,byte[] s2,byte[] s3,byte[] s4);


}
static IIcMultiApp dll=IIcMultiApp.INSTANCE;

……

经查:是由于动态库链接的路径问题,导致的无法加载。

将路径改成绝对路径:

IIcMultiApp INSTANCE = (IIcMultiApp)Native.loadLibrary("E:"+sep+"yunbao"+sep+"代码"+sep+"3.cvs"+sep+"workspace_srcb"+sep+"cn.com.agree.device.icmultiapp"+sep+"driver"+sep+"scms", IIcMultiApp.class);

即可解决

java.lang.UnsatisfiedLinkErrorJava中的一个异常,它通常在使用本地方法时出现。这个异常表示Java虚拟机无法找到本地库或者本地库的依赖库。 对于你提到的异常信息:C:\Users\11509\AppData\Local\Temp\jna-46764766\jna8936920469694806898.dll: Can't find dependent libraries,它表示在加载jna8936920469694806898.dll这个本地库时,找不到它所依赖的其他库。 解决这个问题的方法有以下几种: 1. 确保本地库文件存在:首先,你需要确认jna8936920469694806898.dll这个本地库文件确实存在于指定的路径下。如果文件不存在,你可以尝试重新获取或者重新编译该本地库。 2. 检查依赖库:使用工具(如Dependency Walker)检查jna8936920469694806898.dll所依赖的其他库是否存在,并且是否能够正确加载。如果有缺失的依赖库,你需要将其添加到正确的路径下。 3. 设置本地库路径:如果你确定所有的依赖库都存在,并且路径设置正确,但仍然无法加载本地库,你可以尝试通过设置java.library.path系统属性来指定本地库的路径。例如,在启动Java程序时,可以使用以下命令行参数来设置本地库路径:-Djava.library.path=/path/to/native/libs。 4. 检查操作系统和Java版本:确保你的操作系统和Java版本与本地库和依赖库的要求相匹配。有时,不同的操作系统或Java版本可能导致无法加载本地库。 希望以上解答对你有帮助!如果还有其他问题,请继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值