jni UnsatisfiedLinkError: No implementation found for

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代码版本号一致

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容