服务器无法加载海康sdk依赖的问题
-
首先遇到的jna.jar和examples.jar无法加载的问题,尝试了很多方法无效,以下方法实测有效
-
其次是动态链接库无法加载的问题,而且是播放库,我的方法比较简单,netsdk加载出来就行了,播放库用不到,删掉引用就行了
-
最后,我尝试了不少于五种方式,只能说以下方式对我的项目有效,其他方式也对他们的项目有效
-
需求是从海康录像机上按时间下载视频文件,然后上传到ftp
以下是对我有效的方式
- 打开命令行,将第三方jar包安装在本地maven仓库(注意修改Dfile,DgroupId,DartifactId,Dversion)
mvn install:install-file -Dfile=E:\IdeaProjects\uav-platform\lib\jna.jar -DgroupId=com.sun.jna -DartifactId=jna -Dversion=1.0 -Dpackaging=jar
mvn install:install-file -Dfile=E:\IdeaProjects\uav-platform\lib\examples.jar -DgroupId=com.sun.jna -DartifactId=examples -Dversion=1.0 -Dpackaging=jar
- 在工程pom文件引入即可
<dependency><groupId>com.sun.jna</groupId><artifactId>jna</artifactId><version>1.0</version>
</dependency>
<dependency><groupId>com.sun.jna</groupId><artifactId>examples</artifactId><version>1.0</version>
</dependency>
- 动态库加载说明
【库文件加载说明】
1. lib文件夹里面所有库文件libhcnetsdk.so、libHCCore.so、libssl.so.1.1、libcrypto.so.1.1以及HCNetSDKCom文件夹都需要加载到工程中。2. HCNetSDKCom文件夹如果和libhcnetsdk.so、libhpr.so、libHCCore文件、可执行文件不在同级目录,或者加载失败,可以调用NET_DVR_SetSDKInitCfg(enumType类型赋值为2,lpInBuff对应结构体NET_DVR_LOCAL_SDK_PATH)设置组件库所在路径。3. libcrypto.so.1.1和libssl.so.1.1是开源库,如果库文件加载失败,可以调用NET_DVR_SetSDKInitCfg(enumType类型赋值为3,lpInBuff对应libcrypto.so.1.1所在的路径字符串)、NET_DVR_SetSDKInitCfg(enumType类型赋值为4,lpInBuff对应libssl.so.1.1所在的路径字符串)指定下这些库文件加载路径。4. 如果库文件加载始终不成功,初始化失败,可以尝试将SDK所在路径添加到LD_LIBRARY_PATH环境变量中。【路径设置的Java示例代码】
//这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限//设置HCNetSDKCom组件库所在路径
String strPathCom = "/home/test/Desktop/JavaDemoLinux/lib";
HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH();
System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());
struComPath.write();
hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());//设置libcrypto.so所在路径
HCNetSDK.BYTE_ARRAY ptrByteArrayCrypto = new HCNetSDK.BYTE_ARRAY(256);
String strPathCrypto = "/home/test/Desktop/JavaDemoLinux/lib/libcrypto.so.1.1";
System.arraycopy(strPathCrypto.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, strPathCrypto.length());
ptrByteArrayCrypto.write();
hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArrayCrypto.getPointer());//设置libssl.so所在路径
HCNetSDK.BYTE_ARRAY ptrByteArraySsl = new HCNetSDK.BYTE_ARRAY(256);
String strPathSsl = "/home/test/Desktop/JavaDemoLinux/lib/libssl.so.1.1";
System.arraycopy(strPathSsl.getBytes(), 0, ptrByteArraySsl.byValue, 0, strPathSsl.length());
ptrByteArraySsl.write();
hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer());【路径设置的C++示例代码】
char cryptoPath[2048] = {0};
sprintf(cryptoPath, "/home/test/Desktop/alarm_demo/libcrypto.so.1.1");
NET_DVR_SetSDKInitCfg(NET_SDK_INIT_CFG_LIBEAY_PATH, cryptoPath);char sslPath[2048] = {0};
sprintf(sslPath, "/home/test/Desktop/alarm_demo/libssl.so.1.1");
NET_DVR_SetSDKInitCfg(NET_SDK_INIT_CFG_SSLEAY_PATH, sslPath); NET_DVR_LOCAL_SDK_PATH struComPath = {0};
sprintf(struComPath.sPath, "/home/test/Desktop/alarm_demo"); //HCNetSDKCom文件夹所在的路径
NET_DVR_SetSDKInitCfg(NET_SDK_INIT_CFG_SDK_PATH, &struComPath);
参考:
- https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10
- https://blog.csdn.net/shiwenjun18/article/details/130205302
- 一些尝试过的其他方式
<!-- 加地址 -->
<dependency><groupId>com.sun.jna</groupId><artifactId>jna</artifactId><version>1.0.0</version><scope>system</scope><systemPath>${project.basedir}/lib/jna.jar</systemPath>
</dependency>
<!-- 外部地址 -->
<dependency><groupId>com.sun.jna</groupId><artifactId>jna</artifactId><version>1.0.0</version><scope>system</scope><systemPath>${project.basedir}/../lib/jna.jar</systemPath>
</dependency>
<!-- 项目提示无法加载外部依赖 -->
<dependency><groupId>com.sun.jna</groupId><artifactId>jna</artifactId><version>1.0.0</version><scope>system</scope><systemPath>${pom.basedir}/../lib/jna.jar</systemPath>
</dependency>
<!-- 在以上方式的基础上添加配置 -->
<configuration><includeTypes>jar</includeTypes><includeScope>system</includeScope>
</configuration>
相关文章:
服务器无法加载海康sdk依赖的问题
首先遇到的jna.jar和examples.jar无法加载的问题,尝试了很多方法无效,以下方法实测有效 其次是动态链接库无法加载的问题,而且是播放库,我的方法比较简单,netsdk加载出来就行了,播放库用不到,删…...
brew+nginx配置静态文件服务器
背景 一下子闲下来了,了解的我的人都知道我闲不下来。于是,我在思考COS之后,决定自己整一个本地的OSS,实现静态文件的访问。那么,首屈一指的就是我很熟的nginx。也算是个小复习吧,复习一下nginx代理静态文…...
JavaFx异常: Not on FX application thread; currentThread = Timer-0
我的定时器任务中有两个控件: FXML TextArea Display; FXML Label Label_Display; 执行下方代码会抛出:Exception in thread "Timer-0" java.lang.IllegalStateException: Not on FX application thread; currentThread Timer-0 Timer_tas…...
【Django】无法从“django.utils.encoding”导入名称“force_text”
整晚处理 Django 的导入错误。 我将把它作为提醒,希望处于相同情况的人数会减少。 原因 某些软件包版本不支持Django 4 请看下表并决定Django和Python的版本 方案 如果出现难以响应,或者更改环境麻烦,请尝试以下操作 例如出现以下错误 …...
docker-compose redis 一直启动失败
环境: centos 8.x 背景 使用docker-compose 来启动redis docker-compose.yml 如下: version: 3.3 services:redis:image: redis:latestrestart: alwayscontainer_name: redisports:- 6379:6379volumes:- ./data:/redis/data- ./redis.conf:/redis/re…...
使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装
使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装 受限于每篇文章最多只能贴9张图的限制,这个教程被拆分成了多篇文章连载发布,完整目录结构如下图x所示。后续会发布完整教程的pdf文件,敬请期待。 图x 完整教程文档…...
解决:django设置DEBUG=false时出现的问题
首先,我用的是django4.2,python3.10版本 本来,如果在settings.py中使用 DEBUG True,那么什么问题也没有,当然,这属于调试模式。 DEBUG True TEMPLATE_DEBUG DEBUGSTATIC_URL /static/ STATICFILES_DI…...
2023-08-10力扣每日一题
链接: 1289. 下降路径最小和 II 题意: 每一行选择一个数字,相邻行选择不能是同一列,求选择的数字和最小是多少 解: 每一行选择最小的次小的,下一行能加最小的(列坐标不冲突)就加…...
C#与halcon联合 缩放移动自适应图像
读取图片 //获取文件路径下的图片public HObject GetImgFromPath(string imgPath){HObject L_Img;HOperatorSet.GenEmptyObj(out L_Img);//清空图片L_Img.Dispose();//释放HOperatorSet.ReadImage(out L_Img, imgPath);//读取图片存入到l_imgreturn L_Img;}拉伸显示 //图片拉…...
推荐 4 个 yyds 的 GitHub 项目
本期推荐开源项目目录: 1. 开源的 Markdown 编辑器 2. MetaGPT 3. SuperAGI 4. 一个舒适的笔记平台 01 开源的 Markdown 编辑器 Cherry 是腾讯开源的 Markdown 编辑器,基于 Javascript具有轻量简洁、易于扩展等特点, 它可以运行在浏览器或服…...
chrome插件开发实例05-页面间通信
目录 一、页面间通信的方式 方式1: 通过消息通信...
linux安装ftp
一、安装 参考博客 https://blog.csdn.net/dafeigecsdn/article/details/126518069 rpm -qa |grep vsftpd # 查看是否安装ftp yum -y install vsftpd # 安装vsftpuseradd -d /home/lanren312 lanren312 # 指定在/home目录下创建用户 passwd lanren312 # 给用户设置密码 # 输…...
前后端分离------后端创建笔记(上)
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
Java不可变集合详解
什么是不可变集合 不可变集合,英文叫 immutable 顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。 为什么要使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的…...
常见的JavaScript日常问题
在众多的编程语言中, JavaScript 给大部分的人的第一印象是人畜无害,看起来就简单的,对稍微有点儿开发经验的人来说,在网页中写个JavaScript功能也相当简单。但是当你真的得了解了JavaScript之后就会发现,它比我们想象…...
css modules的用法和在react项目中的应用
参考文章 CSS Modules 的用法 CSS Modules 的功能很单纯,只加入了局部作用域和模块依赖,可以保证某个组件的样式,不会影响到其他组件。 局部作用域 CSS的规则都是全局的,任何一个组件的样式规则,都对整个页面有效。…...
【LangChain概念】了解语言链️:第2部分
一、说明 在LangChain的帮助下创建LLM应用程序可以帮助我们轻松地链接所有内容。LangChain 是一个创新的框架,它正在彻底改变我们开发由语言模型驱动的应用程序的方式。通过结合先进的原则,LangChain正在重新定义通过传统API可以实现的极限。 在上一篇博…...
步入React前厅 - Css In React
目录 扩展学习资料 行内样式 引入样式表 CSS Module /src/components/common.module.css /src/components/listitem.module.css css管理进阶 Css管理工具 练习 扩展学习资料 资料名称 链接 css module CSS Modules 用法教程 - 阮一峰的网络日志 在React中使…...
OpenCV(三)——图像分割(二)
目录 4.边缘检测 4.1 图像梯度的概念 4.2 模板卷积和梯度图的概念 4.3 梯度算子...
28.Netty源码之缓存一致性协议
Mpsc Queue 基础知识 Mpsc 的全称是 Multi Producer Single Consumer,多生产者单消费者。Mpsc Queue 可以保证多个生产者同时访问队列是线程安全的,而且同一时刻只允许一个消费者从队列中读取数据。 Netty Reactor 线程中任务队列 taskQueue 必须满足多个…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...
【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
