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

本文介绍了解决Android开发中因依赖的jar包包含自定义UI资源而导致的问题的方法,并区分了项目依赖与导入jar包的不同。

最近在自学安卓开发,在网上下载的开源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包形式导入。

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


对于出现java.lang.NoClassDefFoundError错误的解决办法,可以尝试以下几个步骤: 1. 检查类路径(Classpath):确保所需的类在项目的类路径中。检查是否已正确设置了依赖项和库文件,并且它们在项目构建路径中。 2. 清理和重建项目:有时编译过程中的错误可能导致类文件丢失或损坏。尝试执行项目的清理操作,然后重新构建项目。 3. 检查依赖项:确认所需的类是否位于正确的依赖项中。如果使用了第三方库或框架,确保已经正确导入并配置了依赖项。 4. 检查类命名和包名:确保类的名称和包名与代码中的引用一致。如果类名或包名有误,会导致无法找到对应的类。 5. 检查Java版本兼容性:如果使用了较新版本的Java特性或API,确保目标设备上的Java版本也支持这些特性。如果目标设备上的Java版本较低,可能会导致NoClassDefFoundError错误。 6. 检查构建工具和环境:如果使用了特定的构建工具(如Gradle或Maven),确保其配置正确并且依赖项已正确添加。还要确保开发环境中使用的编译器和构建工具版本与项目配置兼容。 7. 检查代码逻辑:有时,错误可能是由于代码逻辑错误造成的。检查相关代码,确保类在适当的位置被实例化和引用。 如果以上步骤都没有解决问题,可以进一步查看错误日志和堆栈跟踪,以了解更多关于错误原因的信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值