Jna(Java Native Access)框架是一个开源的java框架,其公司SUN主导开发,是一个建立在Jni基础上的开源框架,优化了 Jni 中最麻烦的数据类型映射, 可以让我们进行高效的开发。
1.导入工具包
01.第一种方式--引入maven包
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.5.0</version>
</dependency>
02.第二种方式--引用jar包
jar下载链接:https://pan.baidu.com/s/1ehlfMcdbvHQc1Wnd8RYXGw 提取码:ysys
下载完成创建springboot项目放置resources
pow文件中添加依赖
<dependency>
<groupId>org.zhitong</groupId>
<artifactId>jna</artifactId>
<systemPath>${project.basedir}/src/main/resources/jars/jna.jar</systemPath>
<scope>system</scope>
<version>1.0</version>
</dependency>
2.创建一个接口支继承Library
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface HCNetSDK extends Library {
HCNetSDK INSTANCE = CommonUtil.isLinux()?(HCNetSDK) Native.loadLibrary("hcnetsdk",
HCNetSDK.class):(HCNetSDK) Native.loadLibrary("C:\\lib\\HCNetSDK",
HCNetSDK.class);
boolean NET_DVR_Init();
}
接口中使用的函数必须与链接库中的函数原型保持一致 (以前代码调用了海康sdk,有兴趣可以上海康卫视官网下载sdk,或者云盘下载)
链接:https://pan.baidu.com/s/1u9-vckRAAcKwzzr7cDLq1Q
提取码:ysys
3.调用接口方法
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class InitSdk {
@PostConstruct
public void initSdk(){
HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
try {
boolean initSuc = hCNetSDK.NET_DVR_Init();
if (initSuc){
System.out.println("初始化成功");
}else {
System.out.println("初始化失败");
}
}catch (Exception e){
L.info("SDK初始化异常");
}
}
4.运行