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

背景

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

xml 复制代码
<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打包本地依赖实现自动编译到项目里的操作

找到该条命令:

bash 复制代码
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文件,内容填写为:

xml 复制代码
<project>
	<groupId>com.haikang</groupId>
	<artifactId>examples</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>
	<dependencies/>
</project>

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

bash 复制代码
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库的依赖改成

xml 复制代码
<dependency>
    <groupId>com.haikang</groupId>
    <artifactId>examples</artifactId>
    <version>1.0</version>
</dependency>

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

相关推荐
Mr.Ma.0122 分钟前
解决Idea 插件Plantuml4idea找不到dot的问题
intellij-idea
我命由我123451 小时前
Java 开发 - 粘包处理器 - 基于消息头 + 消息体(魔数验证、长度验证)
java·网络·后端·网络协议·java-ee·intellij-idea·intellij idea
laplace01232 小时前
Maven
java·maven
凌波粒2 小时前
SpringMVC基础教程(3)--SSM框架整合
java·sql·spring·intellij-idea·mybatis
潲爺18 小时前
Java IDEA学习之路:第九周课程笔记归纳
java·学习·intellij-idea
爱分享的Shawn_Salt21 小时前
IntelliJ IDEA初始化指南
java·ide·intellij-idea
摇滚侠1 天前
idea 刷新maven,提示java.lang.RuntimeException: java.lang.OutOfMemoryError
java·maven·intellij-idea
那我掉的头发算什么1 天前
【javaEE】多线程——线程安全初阶☆☆☆
java·jvm·安全·java-ee·intellij-idea
修行者Java1 天前
Maven 全面解析:从概念到实战,包含 POM、BOM 的区别和应用
maven
蜡笔大新7981 天前
IDEA中的异常
java·ide·intellij-idea