码迷,mamicode.com
首页 > 其他好文 > 详细

andriod程序NoClassDefFoundError

时间:2015-05-19 14:56:51      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:noclassdeffounderror android dependencies android private libraries

今天调试andriod程序时,启动不起来后来看了logcat日志,

05-19 02:45:32.910: E/AndroidRuntime(2206): java.lang.NoClassDefFoundError: org.androidpn.client.PersistentConnectionListener

报了这个错误网上寻求解决方案发现原来是ADT版本的问题

技术分享

高版本的ADT只认识libs目录下的JAR包,所以需要把lib文件夹变成libs


技术分享

高版本的ADT将JAR放到Android Private Libraries虚拟目录下

Android Dependencies虚拟目录是老版本的

Android Private Libraries:表示放在libs里面的jar包引用,视为私有引用。存放的是android私有的库(libs目录下的)。添加jar包到libs里面,系统自动把jar加载到android private libraries中;Private Libraries 就是libs里面的jar包的映射!你把libs中的jar包移除 Private Libraries中也就没有了。

在高版本里面,只要把第三方jar包拷贝到libs目录即可



android api向来是高版本兼容低版本,如api-8(android2.2)必会兼容api-4(android 1.6)
但是反之则不会,你使用2.2的平台版本build了一个apk,若想能在1.6上运行,则需要做向下兼容。
android support-xx是google官方的向下兼容包.

具体引入兼容包步骤

方法1:右击项目→选择Android Tools→Add Support Library…

技术分享

方法2:

从你的Android SDK安装目录(例如,<sdk>/extras/android/support/v4/android-support-v4.jar)下拷贝JAR文件到你项目的libs/目录下。

Android Support v4:  这个包是为了照顾1.6及更高版本而设计的,这个包是使用最广泛的,eclipse新建工程时,都默认带有了。

Android Support v7:  这个包是为了考虑照顾2.1及以上版本而设计的,但不包含更低,故如果不考虑1.6,我们可以采用再加上这个包,另外注意,v7是要依赖v4这个包的,即,两个得同时被包含。

Android Support v13:这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。


技术分享



参考博文:

http://blog.csdn.net/huzgd/article/details/8962702

 

本文出自 “一无所有-天行者” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1652748

andriod程序NoClassDefFoundError

标签:noclassdeffounderror android dependencies android private libraries

原文地址:http://tianxingzhe.blog.51cto.com/3390077/1652748

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!