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的更多相关文章
- Android的项目不能直接引用可移植类库的项目解决方法
深圳_exception() 10:25:51 Android的项目不能直接引用可移植类库的项目,但是可以引用可移植类库生成的dll,这就意味着无法直接断电调试可移植类库上海-黄药师() 10:26: ...
- Android 引用库项目,Debug 库项目
转自:http://www.cnblogs.com/xitang/p/3615768.html#commentform 使用引用项目,无法追到源代码,无法Debug库项目The JAR of this ...
- 关于Android多项目依赖在Eclipse中无法关联源代码的问题解决
被Eclipse中Android依赖项目无法关联源代码的问题困扰了许久,网上搜索了一下,终于得到解决,大大提高了开发效率. 问题描述: 项目有A,B两个Android Project组成, B是And ...
- Android Studio项目转Eclipse项目
Android Studio项目的目录结构和Eclipse项目不同.如何转换? 以FloatingAction 项目为例:实现向上滑动隐藏悬浮按钮,向上滑动显示悬浮按钮. GitHub 地址:http ...
- Android Studio项目结构
我们创建了一个Android Project,打开就如下图所示: 我们选择Project视图,就会有以下的项目文档结构: 上面笔者标注的数字是接下来要讲解的内容. 我们先来看1: 我们创建Appl ...
- android 引用 project以及下拉刷新开源类库Android-PullToRefresh 的使用
Android-PullToRefresh 是一个github上的开源下拉刷新类库, GitHub .此外,该作者还有另外一个实用度和关注量极高的项目–另一种Android ActionBar的实现 ...
- Android studio 项目(Project)依赖(非Module)
Android studio 项目(Project)依赖(非Module) 0. 前言 对于Module 级别的依赖大家都知道,今天说下Android Studio下的项目依赖. 场景: A Proj ...
- 【Android Studio安装部署系列】三、Android Studio项目目录结构
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 简单介绍下Android studio新建项目的目录结构. 常用项目结构类型 在Android Studio中,提供了以下几种项目结 ...
- 在内网使用Gradle构建Android Studio项目
在Android Studio项目中,默认的远程仓库为jcenter,如果在项目引用了一些类库,Gradle构建程序的时候会将这些依赖类库从jcenter网站下载到本地,如我们在 build.grad ...
随机推荐
- CGBitmapContextCreate函数参数详解
函数原型: CGContextRef CGBitmapContextCreate ( void *data, size_t width, size_t height, size_t bitsPerCo ...
- ECLIPSE/JAVAWEB (二)三大框架之Hibernate框架 持续更新中...
(一)发展历史 在Struts框架中使用jdbc连接来读写数据库,我们最常见的就是打开数据库连接.使用复杂的sql语句进行读写.关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常繁琐的过程. ...
- SQL注入的字符串连接函数
在select数据时,我们往往需要将数据进行连接后进行回显.很多的时候想将多个数据或者多行数据进行输出的时候,需要使用字符串连接函数.在sqli中,常见的字符串连接函数有concat(),group_ ...
- 关于angularjs中ajax请求php接口参数个是转换的问题
mainApp.config(function($httpProvider){ $httpProvider.defaults.transformRequest = function(obj){ var ...
- software_testing_work3_question1
package com.Phantom; import java.io.IOException; import java.util.Scanner; public class Work3_1 { /* ...
- C#字符串截取
.取前i个字符 ,i); string str1=str.Remove(i,str.Length-i); .去掉前i个字符 ,i); string str1=str.SubString(i); .从右 ...
- Linux初学---->WinSCP+Putty
十二是个初学者,就觉得有意思.所以学下Linux.如果有啥不对的情路过大牛多多指点.心中也开始学着写博客,因为觉得博客对于学习技术不仅是个记录,还是对学的东西一个复习,一个反思,一个交流.另如果有好的 ...
- oracle数据库卸载(需要完全卸载oracl才能重装)
1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务. 2. 开始->程序->Oracle - OraHome81->Oracle I ...
- haslayout
什么是 haslayout ? haslayout 是Windows Internet Explorer渲染引擎的一个内部组成部分.在Internet Explorer中,一个元素要么自己对自身的内容 ...
- C++模板元编程(C++ template metaprogramming)
实验平台:Win7,VS2013 Community,GCC 4.8.3(在线版) 所谓元编程就是编写直接生成或操纵程序的程序,C++ 模板给 C++ 语言提供了元编程的能力,模板使 C++ 编程变得 ...