海康威视的JAVA版SDK在linux下部署的坑

如果使用海康威视是的JAVA版本SDK在windows下运行没问题,但到了linux下怎么部署都有错误,有两个注意的地方

一个是库文件是否位置正确,能够被正确加载。

另外一个是最坑的,海康用的jna的jar包版本太旧,导致继承Structure类的HCNetSDK.java中的子类文件都有问题,缺少了getFieldOrder方法,解决的办法也很简单,写个类继承Structure,然后重写getFieldOrder方法。

代码如下:

import com.sun.jna.Structure;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;

public class MyStructure extends Structure {
    protected List getFieldOrder(){
        List fieldOrderList = new ArrayList();
        for (Class cls = getClass();
             !cls.equals(Structure.class);
             cls = cls.getSuperclass()) {
            Field[] fields = cls.getDeclaredFields();
            int modifiers;
            for (Field field : fields) {
                modifiers = field.getModifiers();
                if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) {
                    continue;
                }
                fieldOrderList.add(field.getName());
            }
        }
        return fieldOrderList;
    }
}

然后修改HCNetSDK.java中所有继承Structure的类改为extends MyStructure

例如:

//校时结构参数
public static class NET_DVR_TIME extends MyStructure {//校时结构参数
    public int dwYear;        //年
    public int dwMonth;        //月
    public int dwDay;        //日
    public int dwHour;        //时
    public int dwMinute;        //分
    public int dwSecond;        //秒

    public String toString() {
        return "NET_DVR_TIME.dwYear: " + dwYear + "\n" + "NET_DVR_TIME.dwMonth: \n" + dwMonth + "\n" + "NET_DVR_TIME.dwDay: \n" + dwDay + "\n" + "NET_DVR_TIME.dwHour: \n" + dwHour + "\n" + "NET_DVR_TIME.dwMinute: \n" + dwMinute + "\n" + "NET_DVR_TIME.dwSecond: \n" + dwSecond;
    }

    //用于列表中显示
    public String toStringTime() {
        return String.format("%02d/%02d/%02d%02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
    }

    //存储文件名使用
    public String toStringTitle() {
        return String.format("Time%02d%02d%02d%02d%02d%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
    }
}

你可能感兴趣的:(Spring,Boot,maven,海康威视,Java,Structure)