Exception in thread "main" java.lang.Error: Structure.getFieldOrder() on class com.gc.checkingHangingRail.utils.haikang.HCNetSDK$NET_DVR_WORKSTATE_V30 does not provide enough names [0] ([]) to match declared fields [8] ([byAlarmInStatic, byAlarmOutStatic, byAudioChanStatus, byRes, dwDeviceStatic, dwLocalDisplay, struChanStatic, struHardDiskStatic])
at com.sun.jna.Structure.getFields(Structure.java:1077)
at com.sun.jna.Structure.deriveLayout(Structure.java:1234)
at com.sun.jna.Structure.calculateSize(Structure.java:1159)
at com.sun.jna.Structure.allocateMemory(Structure.java:401)
at com.sun.jna.Structure.ensureAllocated(Structure.java:377)
at com.sun.jna.Structure.ensureAllocated(Structure.java:367)
at com.sun.jna.Structure.write(Structure.java:764)
at com.sun.jna.Structure.autoWrite(Structure.java:2166)
at com.sun.jna.Function.convertArgument(Function.java:532)
at com.sun.jna.Function.invoke(Function.java:345)
at com.sun.jna.Library$Handler.invoke(Library.java:265)
at com.sun.proxy.$Proxy0.NET_DVR_GetDVRWorkState_V30(Unknown Source)
at com.gc.checkingHangingRail.utils.HaiKangSDKSaveRealData.getDVRConfig(HaiKangSDKSaveRealData.java:54)
at com.gc.checkingHangingRail.utils.HaiKangSDKSaveRealData.main(HaiKangSDKSaveRealData.java:15)
Exception in thread "main" java.lang.Error: Structure.getFieldOrder() on class com.gc.checkingHangingRail.utils.haikang.HCNetSDK$NET_DVR_WORKSTATE_V30 does not provide enough names [0] ([]) to match declared fields [8] ([byAlarmInStatic, byAlarmOutStatic, byAudioChanStatus, byRes, dwDeviceStatic, dwLocalDisplay, struChanStatic, struHardDiskStatic])
出现这个错误!!
解决方法:找到对应位置
分析错误原因:
Structure.getFieldOrder()匹配的有8个而实际只有0个。
所以再开头添加添加
@Structure.FieldOrder(value= {"dwDeviceStatic","struHardDiskStatic","struChanStatic"
,"byAlarmInStatic","byAlarmOutStatic","dwLocalDisplay"
,"byAudioChanStatus","byRes"})
修改完如下:
@Structure.FieldOrder(value= {"dwDeviceStatic","struHardDiskStatic","struChanStatic"
,"byAlarmInStatic","byAlarmOutStatic","dwLocalDisplay"
,"byAudioChanStatus","byRes"})
public static class NET_DVR_WORKSTATE_V30 extends Structure {//DVR工作状态(9000扩展)
public int dwDeviceStatic; //设备的状态,0-正常,1-CPU占用率太高,超过85%,2-硬件错误,例如串口死掉
public NET_DVR_DISKSTATE[] struHardDiskStatic = (NET_DVR_DISKSTATE[])new NET_DVR_DISKSTATE().toArray(MAX_DISKNUM_V30);
public NET_DVR_CHANNELSTATE_V30[] struChanStatic = (NET_DVR_CHANNELSTATE_V30[])new NET_DVR_CHANNELSTATE_V30().toArray(MAX_CHANNUM_V30);//通道的状态
public byte[] byAlarmInStatic = new byte[MAX_ALARMIN_V30]; //报警端口的状态,0-没有报警,1-有报警
public byte[] byAlarmOutStatic = new byte[MAX_ALARMOUT_V30]; //报警输出端口的状态,0-没有输出,1-有报警输出
public int dwLocalDisplay;//本地显示状态,0-正常,1-不正常
public byte [] byAudioChanStatus = new byte[MAX_AUDIO_V30];//表示语音通道的状态 0-未使用,1-使用中, 0xff无效
public byte[] byRes = new byte[10];
}
更多推荐
Exception in thread “main“ java.lang.Error: Structure.getFieldOrder() on class c
发布评论