调用海康sdk报java.lang.Error: Structure.getFieldOrder()

文章讲述了在使用JNA调用海康SDK时遇到错误,原因在于高版本JNA需要重写Structure的getFieldOrder方法。作者发现是版本兼容性问题并找到了解决方案,包括重写该方法或使用第三方工具类以提高效率。
摘要由CSDN通过智能技术生成

一、问题

在使用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://www.cnblogs.com/easyidea/p/16490708.html

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值