【解决HCNetSDK

最开始你会看到这个不友好的警告,一个很严重的java异常

在这里插入图片描述

运行java版demo遇到的问题一Unable to load library 'HCNetSDK': ÕҲ»µ½ָ¶¨

Exception in thread “main” java.lang.UnsatisfiedLinkError: Unable to load library ‘HCNetSDK’: ÕҲ»µ½ָ¶¨

在这里插入图片描述

解析问题一:不难看出来,无法去加载库文件HCNetSDK.dll这时你分析一下这个报错的代码提示,可以看出来定位到ClientDemo.java这个类的第66行,那肯定是找不到HCNetSDK接口里提供的HCNetSDK实例。再向上看定位分析,找不到HCNetSDK.dll路径,定位到第36行。遇到报错不要怕,重要的是学会分析问题所在并去解决掉,领导也喜欢善于解决问题的。

运行java版demo遇到的问题二Unable to load library 'PlayCtrl': ÕҲ»µ½ָ¶¨

Exception in thread “main” java.lang.UnsatisfiedLinkError: Unable to load library ‘PlayCtrl’: ÕҲ»µ½ָ¶¨

在这里插入图片描述

解析问题二:不难看出来,无法去加载库文件PlayCtrl.dll这时你分析一下这个报错的代码提示,可以看出来定位到ClientDemo.java这个类的第67行,那肯定是找不到PlayCtrl接口里提供的PlayCtrl实例。再向上看定位分析,找不到PlayCtrl.dll路径,定位到第3069行。遇到报错不要怕,重要的是学会分析问题所在并去解决掉,领导也喜欢善于解决问题的。

工具类编写


解析完问题后,我们了解到无法加载HCNetSDK.dll、PlayCtrl.dll这个两个库文件,下面给出解决方案:我采用的是编写工具类GetDLLPath()方法来解决找不到路径的问题。

代码如下

//获取DLL文件路径

public class GetDLLPath {

//路径

public static String DLL_PATH;

static{

//通过getPath方法去拿路径

String path = GetDLLPath.class.getResource(“/”).getPath()

.replaceAll(“20%”, " ").substring(1);

// 这个是解决打包找不到路径的写法,但是目前引入demo运行用不上,我就注释掉了

// String[] ph = path.split(“/”);

// StringBuilder sb = new StringBuilder();

// for(int i= 0;i < ph.length-2;i++){

// sb.append(“/”).append(ph[i]);

// }

// //解决打包加载类找不到路径的问题,这里编写你自己存放的路径

// sb.append(“/src/main/resource/sdk”);

// path = sb.toString();

try {

//设置编码为UTF-8,这样设置转码会出一个问题,一旦遇到+号这种就会转成空格

DLL_PATH = java.net.URLDecoder.decode(path,“utf-8”);

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

//测试

}

}

上面的工具类写好后,就可以修改HCNetSDK.java类,我给出原始文档写法和改良后的写法。修改HCNetSDK对象,引入GetDLLPath工具类,下面的代码给出解决方案

建议多手动敲代码,不要一味的复制粘贴。不然你会生疏的,除非是达到了一定的技术后,可以偷偷懒也是可以的嘛,当然这是玩笑话,活跃下气氛。

引入工具类


//原始写法

// HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(“HCNetSDK”,

// HCNetSDK.class);

//改完后的写法:通过GetDLLPath工具类去找dll绝对路径

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(GetDLLPath.DLL_PATH

  • “HCNetSDK.dll”,HCNetSDK.class);

//原始写法

// PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary(“PlayCtrl”,

// PlayCtrl.class);

//改良后写法:通过GetDLLPath工具类去找dll绝对路径

PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary(GetDL

必看视频!获取2024年最新Java开发全套学习资料 备注Java

LPath.DLL_PATH

+“PlayCtrl.dll”,PlayCtrl.class);

运行成功后的界面


做完以上步骤后,终于可以运行起来了demo起飞,开启征程。工欲善其事,必先利其器

在这里插入图片描述

当然这是官方文档基于javaswing写出的demo。如果项目需要引入,基本是用web开发的模式,网上找一找海康web3.0也是可行的。当然你自己写个出来,也是可行的,最终你还是要在自己的项目中编写接口拿到数据。

分析接口


其实不难发现,最重要的就是HCNetSDK这个接口里面提供的类容。比如定义了一些常量和全局错误代码可供快速查询,具体还是看你需要用到那一部分。下面截取部分代码

在这里插入图片描述

在这里插入图片描述

最后点击注册时遇到了报错提示,可以使用hCNetSDK.NET_DVR_GetLastError()方法,获取错误code码,在HCNetSDK类中有提示

System.out.println(hCNetSDK.NET_DVR_GetLastError());

注册失败,通过错误code码定位原因。

在这里插入图片描述

定位错误可以参考官方给出的PDF帮助文档

在这里插入图片描述

总结

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

**另外本人还整理收藏了2021年多家公司面试知识点以及各种技术点整理 **

下面有部分截图希望能对大家有所帮助。

在这里插入图片描述
基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

**另外本人还整理收藏了2021年多家公司面试知识点以及各种技术点整理 **

下面有部分截图希望能对大家有所帮助。

[外链图片转存中…(img-ZM3VzyRZ-1716356673368)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值