admin管理员组

文章数量:1530307

一、问题

在使用jna包调用海康的sdk时出现java.lang.Error: Structure.getFieldOrder(),刚开始以为是依赖冲突查找所有jna的包发现有3个,一个是自己导入的jna,另外两个不是,所以以为是依赖冲突被误导了,如图:

 这两个包其实是oshi查看系统监控信息所使用的包,所以这个和报错信息没有关系。

经过测试在调用sdk的main方法中不会报错正常执行,只要外部调用就报错。改方法继承了Structure,里面的getFieldOrder相关方法都存在。

二、解决方案

然后以为是sdk版本问题,所以更换全部sdk无果。然后想到可能是jna包的版本问题,更换版本只够还是报错。后查询相关资料(百度)发现在使用高版本的jna时调用sdk中继承的Structure,都需要在方法内重写getFieldOrder()方法。如图:

 这样代码就能正常执行了,但是sdk中的类很多,cv也需要很久时间,所以我看到有个大佬做了工具类,链接:https://wwwblogs/easyidea/p/16490708.html

本文标签: langJavaSDKgetFieldOrderStructure