安卓添加外部Library报NoClassDefFoundError异常,无法生成Android Dependencies目录,一种简单解决办法

最近在自学安卓开发,在网上下载的开源library,然后再添加Jar包的时候,编译无误,但是运行后一直出问题。然后搜索网上的时候发现也好多人遇到这个问题,但是各种方法都试过。花了一下午时间,还是没找出问题。本来就是学硬件开发的,软件只是业余爱好,差点就放弃了。

每次直接拖入再adding it to the build path

或者修改.classpath

或者更改project.properties和proguard-project.txt

或者Add User Library

或者删除重新建立工程

或者什么的什么的

总之基本所有方法都试过了,

每次Jar包不是在Android private Library 中,要么是在Android reference Library 中。

始终无法生成Android Dependencies。

最后在国外网站上发现了一个办法。

原文地址

http://stackoverflow.com/questions/11443262/actionbarsherlock-java-lang-noclassdeffounderror-com-actionbarsherlock-rstyle

右键工程文件,打开Properties,选中Android选项卡,然后在下面Library下点击Add...


然后在你的工程文件中选择你需要加入进来的Library工程。



之后你的Android Dependencies就会自动生成了,之后运行就不会报错了。



本方法应该只适用于那些有Library工程文件的吧,如果只有jar包,那就不晓得怎么去处理了。


后来又查了一下:

刚刚又继续深入的研究了一下,之所以会出现我这种问题,是因为我的jar包中引用了外部的自定义的UI资源,比如string、theme、style,因为jar包中通常是不包含这些资源的,所以如果你引用的jar包是包含有我说的这种引用了的外部自定义UI资源的话,那么这个jar包是不可用的,不论你怎么导入。。。

其实从报错当中就可以看出来,比如说你的错误是java.lang.NoClassDefFoundError: com.weibo.android.R$style

后方有个R$xxx的话,这就代表你的jar包中通过R引用了外部资源,你根本不知道这资源是什么,所以这个jar包是不可用的。

这时候,你就需要像我上面说的,用那种方法来将Library的工程也包含进来,这个软件默认的也会引用那个Library工程中的UI资源。



所以说,如果你的NoClassDefFoundError后面指向的是R$xxx的话,那么你就必须包含Library工程目录



这其实就是安卓项目依赖导入jar包的区别。项目依赖是会引用那个依赖工程中的自定义UI资源的,而导入jar包是没有的。

所以通常的那些开源的,比如说绘图什么的,这些是必须用依赖注入的方式导入项目的。但是算法架构什么的就可以用jar包形式导入。

安卓开发新手的个人拙见,请大神不要嘲笑= =


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值