idea本地jar包添加到项目的maven库 mvn install:install-file

embedded/2025/1/20 5:45:27/

背景

最近在开发项目中需要对接海康威视摄像头,进行视频、照片等数据的获取保存;海康提供的sdk的jar包是自己开发的,在maven库中是找不到的,在项目中需要手动指定jar包路径

<dependency><groupId>com.haikang</groupId><artifactId>examples</artifactId><systemPath>${project.basedir}/lib/examples.jar</systemPath><version>1.0</version>
</dependency>

这样配置,然后在本地调试是没有问题的。
然而,当把项目打包部署到客户的服务器运行时,调用海康sdk的时候报错
java.lang.ClassNotFoundException: com.sun.jna.examples.win32.W32API$HWND

发现问题

经检查发现,是因为打包的时后没有把examples.jar打包到war包中,导致调用对应的方法的时候找不到包

解决问题

先到网上去找本地jar包打包问题,看到了这篇文章:idea本地jar使用maven打包本地依赖实现自动编译到项目里的操作
找到该条命令:

mvn install:install-file-Dfile=F:\xxx\bigdata\2024\vision\lib\examples.jar-DgroupId=com.xxx.examples-DartifactId=com-xxx-examples-Dversion=1.0.0-Dpackaging=jar

将其中的路径和ID换成自己的,在idea中执行,报错:pom.xml not found in examples.jar
再次搜索解决方案

百度AI智能回答:你需要确保你指向的 JAR 文件是一个有效的 Maven 项目,并且 pom.xml 文件存在且配置正确。如果 JAR 文件不是 Maven 项目,你可能需要手动创建一个 pom.xml 文件来描述如何使用该 JAR 文件。
于是我在examples.jar的文件加下面创建了一个pom.xml文件,内容填写为:

<project><groupId>com.haikang</groupId><artifactId>examples</artifactId><version>1.0.0</version><packaging>jar</packaging><dependencies/>
</project>

然后将maven打包命令修改为:

mvn install:install-file -Dfile=D:\aaa\examples.jar -DpomFile=D:\aaa\pom.xml -Dgroupld=com.haikang -Dartifactld=examples -Dversion=1.0.0 -Dpackaging=jar

成功了!!!
最后,我在把maven库的依赖改成

<dependency><groupId>com.haikang</groupId><artifactId>examples</artifactId><version>1.0</version>
</dependency>

再打包项目,jar包已经包含进去了,且摄像头SDK调用成功


http://www.ppmy.cn/embedded/155394.html

相关文章

性价比1.2V电压基准替代

前言&#xff1a; 小于2V的电压基准比较少&#xff0c;且价格稍贵&#xff0c;对于要求不高的场合&#xff0c;1117可以替代使用&#xff0c;温度系数低于 100ppm/C, 价格便宜。 1117是线性稳压器的一种&#xff0c;一般情况下&#xff0c;输出电压可调。 如下述的1117&#xf…

使用vue-next-admin框架后台修改动态路由

vue-next-admin框架是一个基于 Vue 3 和 Vite 构建的后台管理系统框架。它采用了最新的前端技术栈&#xff0c;旨在提供一个高效、灵活、现代化的管理后台解决方案。该框架主要用于构建功能丰富且易于定制的管理后台应用&#xff0c;适合各种中大型项目。 其主要特点包括&am…

AWS S3 跨账户访问 Cross Account Access

进入S3对应的存储桶&#xff0c;上面选项选权限&#xff0c;存储桶策略 -- 编辑&#xff0c;输入对应的policy。 完全控制&#xff0c;包含上传删除权限&#xff0c;policy如下&#xff1a; {"Version": "2012-10-17","Statement": [{"Si…

【记录52】el-table-column 添加fixed属性 滚动条无法滑动

问题&#xff1a; el-table-column 添加fixed属性 滚动条无法滑动 使用element UI组件&#xff0c;用到el-table的el-table-column的fixed属性时&#xff0c;当滚动条长度小于固定列时&#xff0c;滚动条无法通过鼠标去点击滑动操作 原因 fixed是用来固定列的属性&#xff0c;其…

nodejs后端ws与http结合共享一个服务器,前端websocket发送信息后端ws接收信息,使用Map定型数组设置ID

//服务端代码 const httprequire(node:http); const WebSocketrequire(ws);const serverhttp.createServer(); //创建websocket服务 const wssnew WebSocket.WebSocketServer({server}); //创建定型数组 const clientsnew Map();wss.on(connection,(ws)>{ //设置ws的IDclie…

微软SCCM:企业级系统管理的核心工具

目录 摘要 1. 引言 2. SCCM的基本概念 2.1 什么是SCCM? 2.2 SCCM的历史 3. SCCM的架构 3.1 中心服务器 3.2 数据库 3.3 管理点(Management Point) 3.4 分发点(Distribution Point) 3.5 客户端代理 3.6 报告服务 4. SCCM的核心功能 4.1 软件部署与管理 4.2 操…

无降智o1 pro——一次特别的ChatGPT专业模式探索

这段时间和朋友们交流 ChatGPT 的使用心得&#xff0c;大家都提到一个很“神秘”的服务&#xff1a;它基于 O1 Pro 模型&#xff0c;能够在对话里一直保持相对高水平的理解和回复&#xff0c;不会突然变得“降智”。同时&#xff0c;整体使用还做了免折腾的网络设置——简单一点…

速通Docker === 常用命令

目录 Docker命令 镜像操作 容器操作 基础操作 启动参数 容器内部操作 打包成指定文件 发布镜像 总结 镜像操作 容器操作 启动容器参数 容器内部操作 打包镜像 启动指定镜像的容器 发布镜像 Docker命令 启动一个nginx,并将它的首页改为自己的页面&#xff0c;发布…