android编译引用jar包问题

本文介绍了解决Eclipse编译APK时引入第三方jar包导致的Java.lang.NoClassDefFoundError问题的方法。提供了两种解决方案,一种是通过将jar包加入到项目的libs文件夹并配置为源文件夹,另一种是在项目属性的Java Build Path中设置order and export。

eclipse编译apk,在我们引入第三方jar包的时候,有时候编译不报错,但运行会报Java.lang.NoClassDefFoundError;

解决办法

针对这个问题,以下两种方案可以解决问题,但建议选取第二种,因为第一种会很大程度上的增大包大小(这两种方案设置后都需要clean下项目才能生效):

第一种方案:
1、将需要的第三方包拷贝进libs 文件夹。
2、将引用的第三方包,添加进工作的build path -->工程上右键 –>Properties –>Java Build Path –>Libraries –>add jars –>添加进对应jar包
3、(关键的一步)将lib设为源文件夹。---libs文件夹右键-->build path –>Use as Source Folder
此时应该就可以编译运行了,可以看下对应包大小是不是增大不少(预计是增加jar包2倍大小);

第二种方案:
鼠标右键项目,然后属性(Properties),然后java build path 然后order and export 使Android private librars处于勾选状态,让你的jar包也处于勾选状态
此时编译运行应该也ok,此时包大小增加在可接受范围;

个人实例:
本来大小 600k,合入一个三方jar
第一种方式eclipse编完2.4M,第二种方式eclipse编完1.1M,差异还是很明显的!

报错原因分析:

在我们引用第三方jar包,如果order and export 中的jar包没有处于勾选状态,并且第三方jar包在android系统/system/framework/下并不存在的情况下,这是第三方jar包不在apk中,也不在系统中,就会出现“编译不报错,但运行会报Java.lang.NoClassDefFoundError”的问题。
出现这样的问题就要让第三方jar编译进apk里,引用jar包时,勾选order and export 中的jar包。
这其实类似于源码编译时Andoid.mk中的LOCAL_STATIC_JAVA_LIBRARIES选项

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值