java.lang.UnsatisfiedLinkError: Unable to load library 'HCNetSDK': ÕҲ»µ½ָ¶¨

项目里面需要使用海康sdk,各种参考网上的文章,就是搞不定,反复报错

java.lang.UnsatisfiedLinkError: Unable to load library 'HCNetSDK': ÕҲ»µ½ָ¶¨


解决方案就两个:要么把海康的dll文件及sdk子目录复制到jdk的bin目录里面解决,要么就是写死路径解决,如


HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("d:\\lib\\HCNetSDK",
        HCNetSDK.class);
上面两种方法都可以解决,但是项目部署后还要建立目录或者复制文件太麻烦,就没法和项目文件一起发布么?答案是可以的,这么解决:


先写个类文件,然后在类文件的静态初始化块里面取路径

public class ClientDemo 
{

    public static String DLL_PATH;
    static{
        String path=(ClientDemo.class.getResource("/").getPath()).replaceAll("%20", " ").substring(1).replace("/", "\\");
        try {
            DLL_PATH= java.net.URLDecoder.decode(path,"utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

    }

然后这么引用一下就可以了:

public interface HCNetSDK extends StdCallLibrary {


    HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(ClientDemo.DLL_PATH+"HCNetSDK.dll", HCNetSDK.class);

NND,搞了我三个小时,里面有getResource返回路径有%20的jdk历史遗留bug,有需要做utf-8转码的坑,有32位jdk或者64位jdk需要和海康dll匹配的问题


运行结果:




评论 13 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

peihexian

你的鼓励是我创作的动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值