17、java.lang.UnsatisfiedLinkError: No implementation 处理方法
来源:互联网 发布:linux部署nodejs项目 编辑:程序博客网 时间:2024/06/10 11:52
一、问题现象
在使用第三方生成的 so 库时,遇到下面的bug:
UnsatisfiedLinkError: No implementation found for
java.lang.UnsatisfiedLinkError: No implementation found forjava.lang.String com.cloud.wd.tralanguage.JniUtil.getStringFromC() (tried Java_com_cloud_wd_tralanguage_JniUtil_getStringFromC and Java_com_cloud_wd_tralanguage_JniUtil_getStringFromC__)
如图:
二、问题分析
按照bug log提示内容说是我 getStringFromC 方法并没有实现:
而我引用的是第三方的so这个方法已经实现了,既然实现了 为什么还会提示需要实现呢?
原来仔细观察得知 :提示让我实现 我自己写的 native 方法:
com.cloud.wd.tralanguage.JniUtil.getStringFromC(),压根没有引用到我添加的so中的方法, 问题找到了那么如何引用 正确的so呢?
经过一番的 google 发现:再使用第三方so 方法时, 所使用的native 类的位置要和之前生成 so 方法的 包名 、类名 、方法名 要完全一致!
例如:生成so工程的 native 方法类 ,
包名: com.cloud.jnitest 类名: JniTest方法名:getStringFromC ()
则 要想使用 so中的getStringFromC () 方法; 就需要
在使用的so工程中添加:
包名: com.cloud.jnitest 类名: JniTest方法名:getStringFromC ()
只用 两者的包名 、类名、方法名 完全一致才会正确的引用到需要加载的so;
三、问题解决
问题找到了,就好解决了。
在src/main/java 目录下建立 和生成so包名一样的文件夹,
例如:使用生成so的包名是 com.cloud.jnitest ,那么就在使用so的工程src/main/java 新建 相同包名的文件。
在src/main/java /[so包名] 目录下建立 和生成so包名一样的类文件,
例如:使用生成so的类名是 JniTest ,那么就在使用so的工程src/main/java /[so包名] 新建 相同包名的类文件。
在src/main/java /[so包名] /类文件 ,中添加需要使用到的方法。
在使用 so的工程中 最终 效果:
啦啦啦 —— 今天夏至要吃面!所以 我今晚 下面给你吃呀 … 哈哈
参考链接:
http://m.blog.csdn.net/u012721933/article/details/51016027
http://blog.csdn.net/ouyang_peng/article/details/52997698
- 17、java.lang.UnsatisfiedLinkError: No implementation 处理方法
- java.lang.UnsatisfiedLinkError: No implementation found
- 解决:java.lang.UnsatisfiedLinkError: No implementation found
- java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String.....
- Android中java.lang.UnsatisfiedLinkError: No implementation found问题解决
- 调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for
- 百度地图java.lang.UnsatisfiedLinkError: No implementation found for int
- 解决java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String 报错的一个小方法
- 百度地图 java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String
- No implementation found for native 以及 java.lang.UnsatisfiedLinkError问题解决一例
- [JNI] java.lang.UnsatisfiedLinkError:Native method not found && no implementation found for native ~
- 调用百度地图 5.0手机报错java.lang.UnsatisfiedLinkError: No implementation found for int
- 一不小心就报了 java.lang.UnsatisfiedLinkError: No implementation found for long 怎么解决
- Android之JNI错误:no implementation found in native -java.lang.UnsatisfiedLinkError: Native method not
- java.lang.UnsatisfiedLinkError: No implementation found for long com.autonavi.amap.mapcore.MapCore.n
- 百度地图 5.0手机报错java.lang.UnsatisfiedLinkError: No implementation found for int
- java.lang.UnsatisfiedLinkError: No implementation found for long com.baidu.platform.comjni.map.commo
- java.lang.UnsatisfiedLinkError: No implementation found for long com.autonavi.amap.mapcore.MapCore.n
- Sublime报Decode error
- android studio导入external library
- React.js 官方文档摘记:非受控组件
- 设计模式之单例模式
- 29、不一样的C++系列--对象模型分析
- 17、java.lang.UnsatisfiedLinkError: No implementation 处理方法
- 170621
- VirtualBox 中 Ubuntu 与 Windows 共享文件夹设置
- HTML5 Canvas通过JS旋转图片
- java实现鼠标和键盘动作后台监听
- html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
- Git 基础
- MySQL 当前时间30分钟以内的数据
- 测试