本人将海康威视提供的HCNetSDK.java文件拷贝到我的项目,并且将依赖的examples.jar和jna.jar放在了lib目录下,但是在我打包时,无法打包成功,提示未实现:com.sun.jna.Structure中的抽象方法getFieldOrder()。经过仔细排查,发现海康提供的jna.jar和我项目之前引elasticsearch下的jna.jar冲突了,我es用的是6.7.1版本,里面的jna.jar是4.5.1版本,该版本Structure中存在getFieldOrder方法用abstract修饰了,所有继承了该抽象类(Structure)都要实现该方法。
解决方法,将海康的jna.jar在pom里面的依赖提到最上面
<dependency> <groupId>jna</groupId> <artifactId>com</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/lib/jna.jar</systemPath> </dependency>
这样打包时使用的就是海康威视提供的jna.jar,解决了打包报错的问题。
也可以用其它解决jar包冲突的办法来处理,具体方法请自行搜索。