安装ADT17后出现NoClassDefFoundError 的解决方法

错误:升级到ADT 17之后,编译ok,再次运行程序,log提示:NoClassDefFoundError,程序找不到Jar包里对应的类。

先说明两种解决方法,在文末叙述原因。


First of all!

 

注意1

首先观察,项目里是否有一个叫做Referenced Libraies的文件夹,里边是你要使用的所有jar包,但是Android Dependencies文件夹里只有:annotations.jar,待会注意变化。可参看下图。(因为我已经升级至adt17,无法返回截图,下图不是我的项目,仅供说明而已)

clip_image002[2]

 

注意2:

查看之前运行的apk大小,很重要,待会分析原因。

 

 

解决方法一:

1, 在项目上单击右键,Properties----à Java Build path----àLibraries---àremove掉之前添加的所有外部jar包,只留下两个自带的:Android x.x.x 和Android Dependencies。点击ok。第一步完成。

如图:

clip_image004[2]

变化:如果你已经移出了所有的外部jar包,Referenced Libraies文件夹消失。

 

2, 在项目上单击右键,新建一个文件夹,命名为libs(注意必须命名为libs,否则会报错)。然后复制所要使用的jar包到此文件夹即可。

变化:Android Dependencies文件夹里自动出现了你要使用的所有jar包。

clip_image006[1]

运行ok。

注:如果之前就有lib包存放jar包,只需要按照步骤1,然后修改文件夹lib为libs即可。

 

解决方法二:

如果不建立libs文件,只是单纯的通过Add External JARs导入jar包,见下图

clip_image008[1]

那么可以很轻松的解决这个问题。

 

点击Order and Export,选中你要使用的jar包,例如jsoup,点击ok。运行即可。

clip_image010[1]

 

原因:外部引入的jar包,虽然已经存在于项目中,但是实际的位置仍然在其他位置,如上图所示(我的项目在c盘,jar包在f盘)。以上两种方法都将jar包放入项目中。运行的时候,将jar包加入apk中。成功运行后,你可以观察下,apk是否比之前大了一些。

 

Plus:

如果执行上面两种方法之后,仍然有requires unavailable shared library的错误log提示,请打开AndroidManifest.xml文件。删除其中的<uses-library />配置。即可。

 

End

 

参考自:http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

参考自:http://tools.android.com/recent/ignoringlintwarnings

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值