记录下 java.lang.UnsatisfiedLinkError 错误

前因:在我的项目中调用到设备,使用厂家提供的sdk中有dll文件调用,在项目中引用dll文件提示了异常,奇怪的是如果把dll直接copy放在resources下可以获取到,放到目录下就认不到了。

结构目录:
在这里插入图片描述

java.lang.UnsatisfiedLinkError 错误

java.lang.ExceptionInInitializerError通常发生在类初始化的过程中,当静态初始化块(static initializer block)或静态初始化器(static initializer)抛出了异常时。在这个场景中,异常是由java.lang.UnsatisfiedLinkError引起的,这表明Java虚拟机(JVM)在尝试加载本地库CVRClientAPI时失败了。
UnsatisfiedLinkError通常有以下几个可能的原因:
本地库文件不存在:确保xxx.dll文件确实存在于预期的路径中,即win32-amd64目录下。
路径问题:JVM可能没有正确地搜索到本地库的路径。你可以通过设置java.library.path系统属性来指定库的路径,或者在启动JVM时通过命令行参数来设定。

解决方式一

//设置你的dll目录
System.setProperty("java.library.path", "path/to/your/library/directory");

解决方式二

//启动程序时添加运行参数  设置你的dll目录
-Djava.library.path=path/to/your/library/directory 

这个坑不知道是为啥 。可能是 Native.load(getLibraryName(), API.class); 加载的路径只能认到class下。不能加多一层目录

完美运行,打包也要注意dll文件的位置!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值