android studio preview java.lang.noclassdeffounderror

来源:互联网 发布:最有名的十大网络主播 编辑:程序博客网 时间:2024/05/22 12:26

闲话不多说,直接说bug。

我的bug是由于引用了百度地图api引起的。当我按照百度地图的官方文档将jar包和so文件正确添加到项目中之后,先后出现了以下两个bug:

1:java.lang.unsatisfiedlinkerror

2:java.lang.noclassdeffounderror

这两个bug一直交替出现在我的preview中,修复了一个另一个就出现了,修复了另一个原来那个bug又出现了,着实让人心累。。

在网上找了很长时间,经过筛选博主觉得有用的资料如下:

1:引入第三方库出现java.lang.noclassdeffounderror。

首先说一下android studio引入第三方库的方法。

1):将第三方库的jar文件拷贝到工程的app/libs文件夹下。

2):右击jar文件,选中add as library...

3):clean或是rebuild工程。

以上基本就是导入第三方库的方法,原理就是在app/build.gradle文件中的dependences中添加类似于

compile files('libs/baidumapapi_base_v4_0_0.jar')的东东。
其中baidumapapi_base_v4_0_0.jar就是我要引入的库。
其实android studio在工程创建的时候dependences中就有默认的如下的代码:
compile fileTree(include: ['*.jar'], dir: 'libs')
意为将libs下的所有jar包引入项目,所以理论上只要将jar包添加到libs文件夹下,然后clean,让gradle来帮我们完成第三方库的引入就可以了。
由于博主遇到了bug,所以就按照官方文档给出的做法,自己手动添加了jar包。
当然,添加第三方库也可以通过右击工程在可视的dependences中添加,这里就不多说了,相信各位都知道。
然后是将百度地图的so文件引入。
方法是在src/main/下建立jniLibs,将官方给出的so文件拷贝进去即可。但是我这样得到了java.lang.unsatisfiedlinkerror。
于是我查看了很多关于引入so文件的资料。有如下:
1:so文件要装在jniLibs/armeabi/文件夹下
2:可以将armeabi文件直接放入app/libs/文件夹下,然后在app/build.gradle中写
sourceSets {    main { jniLibs.srcDir 'libs' }}这样就可以了。注意的是,如果在src/main/下建立了jniLibs,就不用添加sourceSet代码。
  以上所述都是博主整理来的,应该是比较靠谱的,如果有错误,还请指正。下面我来说我bug的解决方法。
当觉得自己的操作没有问题的时候,我的preview中出现了java.lang.unsatisfiedlinderror。clean,rebuild,解决。
但是有出现了java.lang.noclassdeffounderror错误。
注意这个错误与java.lang.classnotfounderror错误区分,java.lang.noclassdeffounderror错误的原因不是因为jar包没有导入,而是
运行找不到类,类已经存在。java.lang.classnotfounderror原因是根本在工程中找不到类。至于错误的导致原因有很多,这里不再赘述。
大多数的java.lang.noclassdeffounderror的错误都是clean,rebuild解决的,没错,clean,rebuild,本文提了很多次。
但是我的错误没有被解决。
找了三天,终于找到。
因为是preview的bug,所以解决方法是将预览的sdk版本更换一下,看看有没有帮助。
我的错误就是这样解决的。我将sdk 23换成了21,错误消失。(不明白的小伙伴没关系,会上图。)
就在我写这篇博客的时候,中途又打开了android studio,又遇到了java.lang.noclassdeffounderror,依旧是更换sdk版本解决了错误。
没错,就是右上角那个小机器人旁边的数字,我将他改成了21,错误解决。在更换了几次sdk版本后,错误就不见了。
作为一个安卓小小白,刚刚开始开发还是有一些心累,这个错误找了好长时间,所幸终于找到了。博主也总结到了一个道理,
只要坚持不懈的不放弃,没哟与解决不了的bug。
虽然解决了这个问题,但是我引入百度地图gradle编译之后,还是出现了gradle finish with 672 errors。。。
代码可以畅通无阻地运行,可就是有这么几百个错误。672,672,672.....目前还不知道怎么解决,求知道的小伙伴指点。还有,虽然我
解决了bug,可还是不知道为什么改了preview的sdk版本就可以解决bug,还是求知道的小伙伴指点。
搞程序的一生bug,一生debug,希望我们能风雨同舟,互相帮助。。。。

0 0
原创粉丝点击