关于java.lang.UnsatisfiedLinkError的小案例

来源:互联网 发布:网络之纵横天下txt下载 编辑:程序博客网 时间:2024/05/29 09:16

在许多项目中我们都会用到第三方动态库.so文件,但是往往会引来很多烦恼,比如:java.lang.UnsatisfiedLinkError

06-17 15:52:08.097    7876-7916/com.ishow.scan E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-61542    java.lang.UnsatisfiedLinkError: Native method not found: com.ishow.scan.zbar.ZbarManager.decode:([BIIZIIII)Ljava/lang/String;            at com.ishow.scan.zbar.ZbarManager.decode(Native Method)            at com.ishow.scan.decode.DecodeHandler.decode(DecodeHandler.java:58)            at com.ishow.scan.decode.DecodeHandler.handleMessage(DecodeHandler.java:39)            at android.os.Handler.dispatchMessage(Handler.java:107)            at android.os.Looper.loop(Looper.java:194)            at com.ishow.scan.decode.DecodeThread.run(DecodeThread.java:45)

无论你怎么搞,它就是报这个错误,让人很烦恼,本人开始使用Android studio,开始不懂如何导入动态库文件,毕竟Android studio不同于eclipse,在libs目录下放.so文件是没有用的,于是在Q群那里求救,终于有所收获,整理了一下,顺便在这里跟读者分享。

第一种方法:(最简单的方法)

在main目录下创建一个文件夹,文件夹名称:jniLibs,然后把我们的动态库文件导入到该文件夹下面,如图:



这样就可以把.so动态库文件导入到了Android studio。可是不管我怎么运行,就是报上面的java.lang.UnsatisfiedLinkError异常,我开始怀疑我导入的动态库文件,Android studio是不是无法找到,但按理说如果我的推断错误的话,应该不是报这个错误。于是我继续查找导入动态库文件到Android studio的方法,黄天不负有心人,我又学到了一种方法,

该方法主要有以下几个步骤:

1.在Windows下创建一个文件夹,文件夹名称lib

2.将动态库文件拷贝到lib目录下,如图,armeabi目录下存放.so文件


3.使用zip打包lib文件夹,然后重命名:armeabi.jar

4.把armeabi.jar拷贝到Android studio项目的libs目录下,即可



通过了第二种方法完成了导入动态库文件到Android studio了,可是运行时还是出现了java.lang.UnsatisfiedLinkError异常,无奈之下,我以为是Android studio搞的鬼,可能我不熟悉Android studio。可是当我切换到eclipse,新建一个项目,继续完成我的工作(扫描二维码的项目),一切工作准备好后,运行项目,还是出现java.lang.UnsatisfiedLinkError异常,我快要疯了。于是我静下来思考:不可能eclipse和Android studio都会出现java.lang.UnsatisfiedLinkError,除非一开始我就一直走进一个错误的“圈套”。不错,问题终于搞清楚了,问题一定是加载库文件的那个类。于是经过进一步探索,运来是存放库文件的包名我写错了,这个包名不能随便命名,必须严格按照库文件里面的Android.mk指定的包名。于是我把包名该为:com.zbar.lib(原先com.ishow.org.zbar时一直报错),把包名改回来后,运行,哈哈,问题终于解决了!


要解决关于jni的问题非常的苦恼,所以大家要注意了,要引用动态库文件,加载动态库文件的类对应的包名,必须与Android.mk里面定义的包名一致,否则将会出现java.lang.UnsatisfiedLinkError,如果这篇文章对你有帮助,希望留下个脚印,谢谢




3 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 不录 androidikev Fileencodinghasnotbeenset,usingplatformencodingUTF bpnn 刘备:你甚至不肯喊我一声大哥 原神:提瓦特的另一个旅行者 我用游戏改变了时间线 学霸文明辅助系统 龙族里的暗裔剑魔 无限进化:我加入了万界聊天群 和女魔头夫人苟在江湖的日子 我在综漫世界推销精灵 我不可能会录这种自述 没人比我更懂禁忌 四合院之飞扬年代 50块上单,只好去LCK打替补 莽荒纪之长生之路 死神:从统治虚圈开始 这位公子深藏不露 神话之门 诸天抽奖:开局段誉巅峰内力 杀手的退休柯学纪实 借神长生:从拐走仇人的道侣开始 暮年修仙的我长生不死 无尽海域,我以养妖求长生 吞噬星空之我躺平了也变强了 跑山人:我的属性加点人生 从九牛二虎开始无敌 高达SEED之前进四 龙族:从道诡异仙归来的路明非 穿越凡人我能无限升级 超神:无限知识,我带文明飞升! 重回八二做个好人 从斗罗开始:杀戮之都遇比比东 秦时:从监禁焰灵姬开始 重生之四合院的日子 权游之凛冬龙主 美利坚:我就是华尔街大公牛 我的宠兽词条过于离谱 末世诡海:全民加点孤艇求生 超神:开局奖励修罗铠甲