Android引用项目出现ClassNotFoundException

Android中在引用其他工程,尤其是github中的相关库时,如果引用关系设置的不对,很容易出现ClassNotFoundException,例如下面的异常信息

07-26 12:47:51.549: E/AndroidRuntime(8107): FATAL EXCEPTION: main
07-26 12:47:51.549: E/AndroidRuntime(8107): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.ex.chips.sample/com.android.ex.chips.sample.MainActivity}: android.view.InflateException: Binary XML file line #23: Error inflating class com.android.ex.chips.RecipientEditTextView
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2081)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2106)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.ActivityThread.access$600(ActivityThread.java:137)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.os.Handler.dispatchMessage(Handler.java:99)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.os.Looper.loop(Looper.java:137)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.ActivityThread.main(ActivityThread.java:4897)
07-26 12:47:51.549: E/AndroidRuntime(8107): at java.lang.reflect.Method.invokeNative(Native Method)
07-26 12:47:51.549: E/AndroidRuntime(8107): at java.lang.reflect.Method.invoke(Method.java:511)
07-26 12:47:51.549: E/AndroidRuntime(8107): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
07-26 12:47:51.549: E/AndroidRuntime(8107): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)
07-26 12:47:51.549: E/AndroidRuntime(8107): at dalvik.system.NativeStart.main(Native Method)
07-26 12:47:51.549: E/AndroidRuntime(8107): Caused by: android.view.InflateException: Binary XML file line #23: Error inflating class com.android.ex.chips.RecipientEditTextView
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:768)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.view.LayoutInflater.rInflate(LayoutInflater.java:816)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.view.LayoutInflater.inflate(LayoutInflater.java:559)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.view.LayoutInflater.inflate(LayoutInflater.java:417)
07-26 12:47:51.549: E/AndroidRuntime(8107): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:334)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.Activity.setContentView(Activity.java:1942)
07-26 12:47:51.549: E/AndroidRuntime(8107): at com.android.ex.chips.sample.MainActivity.onCreate(MainActivity.java:34)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.Activity.performCreate(Activity.java:5084)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
07-26 12:47:51.549: E/AndroidRuntime(8107): at com.lbe.security.service.core.client.b.x.callActivityOnCreate(Unknown Source)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2045)
07-26 12:47:51.549: E/AndroidRuntime(8107): ... 11 more
07-26 12:47:51.549: E/AndroidRuntime(8107): Caused by: java.lang.ClassNotFoundException: com.android.ex.chips.RecipientEditTextView
07-26 12:47:51.549: E/AndroidRuntime(8107): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
07-26 12:47:51.549: E/AndroidRuntime(8107): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
07-26 12:47:51.549: E/AndroidRuntime(8107): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.view.LayoutInflater.createView(LayoutInflater.java:622)
07-26 12:47:51.549: E/AndroidRuntime(8107): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:757)
07-26 12:47:51.549: E/AndroidRuntime(8107): ... 22 more

需要注意的是Android SDK首先要指定,其次,需要在主项目Properties中的Android下引用其他项目,如下图所示

其他的引用方式,如果被引用项目不是纯Java代码(包含Android的drawable、layout等资源)时,程序是运行不起来的,如下的引用方式是错误的

网上的许多解决方法说,采用上图引用资源后,调整Order and Export,其实,如果引用其他资源采用的是Android引用方式,是不会在这个标签下出现被引项目的,如下图所示

最后谈下感受,其实稍微开发过点Android的都应该知道怎么引用Android项目,但从github上下载了整个样例后,觉得都引用好了,也就忘了这一茬,一运行发现不对,就开始病急乱投医,各种导入,各种上网搜,其实冷静下来分析一下,马上就能发现问题。所以,遇到问题后的第一反应不应该是马上想解决方案,而是要学会先分析问题。

Android引用项目出现ClassNotFoundException

时间: 2024-10-18 21:53:25

Android引用项目出现ClassNotFoundException的相关文章

Android 引用库项目,Debug 库项目

转自:http://www.cnblogs.com/xitang/p/3615768.html#commentform 使用引用项目,无法追到源代码,无法Debug库项目The JAR of this class file belongs to container 'Android Dependencies' which does not allow modificasource not found 1.库项目建立 新建Android项目,下一步 ,有一个复选  as a Libray 勾上 库

第五课-Android库项目

由于在开发过程,为了实现未曾了解的某种效果与特定功能,而求助于网上优秀的开源项目,在使用过程中发现引用开源的Library Project(库项目),的确可以解决很多问题,而且也给出了一种思路,好的软件公司也需要有自己的Library Project(库项目),这样不必要进行重复开发工作,这只是自己的想法.下面将自己的心得或体会记录如下,以下是自己的编写风格. 应用场景: 在项目的开发过程中,经常会使用公司内部的公共库或使用优秀的开源项目库,以求达到快速开发.代码复用的效果.所开发的项目中要集成

从零开始的Android新项目11 - 组件化实践(1)

最近更新不太频繁,一方面工作上比较忙,除了 Android 也在负责前端,另外周末和深夜也在帮人做 Go 后台.设计技术方案.管进度的事情(因为报酬不错没忍心拒绝,而且确实对个人成长还有帮助),所以实在对不住. 另外,文章最底下有捐款啊,最近真是都没钱吃饭了... 前言 这里的组件化,指的是 MDCC 2016 上冯森林提出的<回归初心,从容器化到组件化>. 我个人一直是比较反感黑科技的,其中首当其冲的就是 插件化 以及 保活.作为一个开发者,除了研究技术,提高自己以外,是否应该考虑些其他东西

Android开源项目SlidingMenu深入剖析

SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果.如Evernote.Google+.Foursquare等,国内的豌豆夹,人人,360手机助手等都使用SlidingMenu的界面方案. 项目下载地址:https://github.com/jfeinstein10/SlidingMenu注意: SlidingMenu依赖于另一个开源项目ActionBarSherlo

Android 创建项目时出现appcompat_v7 类包的问题

Android 创建项目时出现appcompat_v7 类包的问题 最近在进行Android开发时发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的引用库包,这到底是怎么回事呢?原来appcompat_v7是Google自己的一个兼容包,就是一个支持库,能让2.1以上全使用上4.0版本 的界面. 解决: 创建项目时,Minimum Required SDK这一项选择4.0版本以上. 注: Minimum Required SDK: 最低的SDK版本号. T

在内网使用Gradle构建Android Studio项目

在Android Studio项目中,默认的远程仓库为jcenter,如果在项目引用了一些类库,Gradle构建程序的时候会将这些依赖类库从jcenter网站下载到本地,如我们在 build.gradle使用了以下依赖: dependencies { compile 'de.hdodenhof:circleimageview:2.1.0' } 下载的地址为:https://jcenter.bintray.com/de/hdodenhof/circleimageview/2.1.0/ 本地缓存地址

Android Studio项目结构

我们创建了一个Android Project,打开就如下图所示:  我们选择Project视图,就会有以下的项目文档结构:  上面笔者标注的数字是接下来要讲解的内容. 我们先来看1: 我们创建Application的时候,要求我们输入项目名称,1就是我们创建的项目,AndroidDevelopCourse是项目名称,在实际开发中,我们要为我们项目取一个能明确表达产品的名称,一般使用英文来描述,比如我们的课程是“Android开发课程”.1展开之后是我们完整的项目文档结构. 2: 我们的Andro

关于Android多项目依赖在Eclipse中无法关联源代码的问题解决 (android dependencies 源码)

转载于:http://www.cnblogs.com/flashlm/archive/2013/02/22/eclipse-android-project-dependencies-does-not-allow-modifications-to-source-attachments.html 被Eclipse中Android依赖项目无法关联源代码的问题困扰了许久,终于得到解决,大大提高了开发效率. 问题描述: 项目有A,B两个Android Project组成, B是Android Librar

Android studio 发布Android Library项目到JCenter

(本来这篇文章只是想当做笔记记录,下了班才写的,第二天起来看到几百个访问量,突然对生活充满了希望,受到了鼓舞,于是决定完善一下.____2016/05/31) 互联网的发展是非常迅猛的,刚刚觉得自己适应了eclipse的用法,突然发现它已经被淘汰了. OK,今天不是来说eclipse和Android studio的褒贬.我们是来学习技术的.在做SDK相关的开发时发现一个问题,Android studio 使用第三方包超级简单方便.一行代码搞定. compile 'com.ruffian.util