jni UnsatisfiedLinkError: No imp

2020-04-14  本文已影响0人  DON_1007

jni出现No implementation found for...是因为在so运行的时候,找不到与头文件对应的方法实现,记录下我碰到的出现这种问题的原因以及处理方式:

一、java包路径与jni头文件中的签名包路径不一致

这点是jni的规则,一般jni头文件是通过命令生成,不建议手动修改。

二、c或cpp文件未引入 (include) jni头文件

这种是属于粗心大意引起的问题

三、未加载so 或 so加载失败 或 加载的so与java代码不匹配

1、在so加载失败的时候,及时抛出异常或警告信息
2、若新增java native方法,然而加载成功的so仍然是旧版本so,调用也会抛出异常。针对这种情况,在so中增加读取版本号方法,确保加载成功的so版本号与java代码版本号一致

上一篇下一篇

猜你喜欢

热点阅读