Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ClassNotFoundException解决方案总结

ClassNotFoundException解决方案总结

作者头像
fanfan
发布于 2022-05-07 06:30:50
发布于 2022-05-07 06:30:50
5.4K00
代码可运行
举报
文章被收录于专栏:编程思想之路编程思想之路
运行总次数:0
代码可运行

相信很多初学Android的会遇到这个问题,在此做一个总结,方便日后查阅。

1,首先说一下异常

ClassNotFoundException:类找不到异常。首先看你的logcat中是否显示Caused by : java.lang.ClassNotFoundExcetion..

2,产生条件

什么时候会抛出classnotfoundException异常呢?这涉及到底层的API

当程序试图使用class类中的forname方法、classloader类中的findsystemclass方法,classloader类中loadclass方法通过字符串名的形式加载此类时,会抛出该异常

3,解决方案

 1》,首先检查一下你的环境变量classpath的配置,看一看所需要的支持类库是否放在类路径里面,环境变量配置相关参考博客  http://blog.csdn.net/zrf1335348191/article/details/50773255

 2》,是否使用了重复的类库,且版本不一致,导致低版本被优先使用

 3》,类名错了,在调用class类中的forname方法时会出异常,很明显,我的是在调用classloader的loadclass方法时出错

 4》,没有导入纯Java驱动包

 还有一些初级错误比如

 5》,清单配置文件中是否activity的路径错误,activity名字是否错误

还有尽量不要使用中文作为项目名称,如果你想修改APP的名称可以在string.xml以及Androidmanifest.xml文件中修改

4,示例解决方案

如果在Androidmanifest.xml文件中点击activity类名根本无法进入到activity中,那就说明包名跟目录不是对应的,必须修改。检查时发现包名是错误的

我的目录结构如下:

也就是说mainactivity类位于src/activity包下,而我的清单配置文件中的package却配置错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.fang.myforceclose"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme" >
        <activity 
            android:name=".MainActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name">
            <intent-filter >
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

导致找不到该MainActivity

1》此时要么改变清单配置文件中的包名

将包名改成如下即可,此时如果在activity节点下可以进入到MainActivity类中,则程序就可以运行了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package="src.activity"

在activity节点下name属性改成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<activity 
            android:name="activity.MainActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name">
            <intent-filter >
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

可是,这种做法只有第一次启动程序时有效,在第二次去启动时程序还是会在com.fang.myforceclose文件夹下寻找包名,所以,最终解决方案是,将activity放置在com.fang.myforceclose目录或其子目录下,将目录结构进行如下修改

如果你出现了classnotfoundexception异常,但是上述方案无法解决你的问题,请留言

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
adb 安装并运行 apk[通俗易懂]
adb install apk路径即可,例如:adb install E:\filetestapplication.apk
全栈程序员站长
2022/08/24
5.7K0
android插件开发机制
插件机制实质上就是由主体程序定义接口,然后由插件去实现这些接口,以达到功能模块化。Android系统是基于Linux内核的,其安全机制也继承了Linux的特性,再加上android framework没有提供插件化编程的接口,使得在android上做插件开发显得很困难。经过与同事的研究和讨论,想到了一种在android上做开发插件的方法。下面直接通过一个demo来说明。 Step1:定义主程序中的接口。 public interface MyInterface {   public void te
xiangzhihong
2018/01/30
8180
android插件开发机制
【Android 笔记】Application的应用
这是android的Manifest文件,可以看到根节点是application,这就是我们要说的类。Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属性把自己的 Application的名字定入即可)。
程序员小何SS
2021/12/16
6450
BroadcastReceiver插件化解决方案
1.静态广播和动态广播仅区别于注册方式的不同。静态广播的注册信息保存在PMS中,动态广播的注册信息保存在AMS中
用户3112896
2019/09/26
8330
Android Activity之间的跳转
1、在应用中增加一个Activity,这需要修改AndroidManifest.xml文件
week
2018/08/27
4740
Activity初入门,创建和配置如此简单
Activity是Android应用的重要组成单元之一,也是Android应用最常见的组件之一。前面看到的示例通常都只包含一个Activity或一个AppCompatActivity,但在实际应用中这是不大可能的,往往都会包括多个Activity,不同的Activity 向用户呈现不同的操作界面。从本期开始将针对Activity的相关知识进行详细的学习。 一、Activity简介 Activity是Android组件中最基本也是最常用的一种组件,在一个Android应用中,一个Activit
分享达人秀
2018/02/05
1.7K0
Activity初入门,创建和配置如此简单
安卓开发_浅谈主配置文件(AndroidManifest.xml)
AndroidManifest.xml 本质:是整个应用的主配置清单文件 包含:该应用的包名,版本号,组件,权限等信息 作用:记录该应用的相关的配置信息 一、常用标签 (1)、全局篇(包名,版本信息) (2)、组件篇(四大组件)、 (3)、权限篇(申请权限和定义权限) 1、全局篇 (1)、应用的包名以及版本信息的管理 package="com.example.tset" android:versionCode="1" android:versionName="1.0"> (2)、控制android版本的信
听着music睡
2018/05/18
8960
application和sharedpreference的区别
在android程序中,我们经常用intent来传递数据,但是intent传递的数据类型太少了。因此我们经常通过以下两种方法来传递数据。
提莫队长
2019/02/21
5380
Android项目实战欢迎界面
欢迎界面 首先同理把欢迎界面的图片导入到drawable目录下,在导入时 Android Studio 会提示如下
达达前端
2022/04/29
4180
Android 监听安装和卸载
Android 应用程序的安装和卸载事件,是由系统进行监听并全局广播的,支持1.5(android 3)以上
阳光岛主
2019/02/19
2.4K0
Android 监听安装和卸载
Python——使用ElementTre
XML内容如下: <?xml version="1.0" encoding="utf-8" standalone="no"?> <manifest xmlns:android="http://sche
py3study
2020/01/09
5020
AndroidManifest.xml详解
AndroidManifest官方解释是应用清单(Manifest意思是货单),每个应用的根目录中都必须包含一个,并且文件名必须一模一样。这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面。
清风穆云
2021/08/09
3.9K0
Android自定义权限广播
已经很久没有写文章了,最近有人问我怎么断片(篇),我发现...不扯淡了,开始讲自定义权限广播
包子388321
2020/06/16
1.4K0
AllowBackup,打开子应用,不显示桌面图标的子apks,label标签的区别,AndroidManifest.xml中的package
AllowBackup是在Android 2.2中引入的一个系统备份的功能。允许用户备份系统应用和第三方应用的apk安装包和应用数据,以便在刷机或者数据丢失后恢复应用,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复。第三方应用开发者需要在应用的 AndroidManifest.xml 文件中配置 allowBackup 标志(默认为 true )来设置应用数据是否能能够被备份或恢复。
zhangjiqun
2024/12/16
1480
android程序安装后在模拟器上不显示,并且控制台显示The launch will only sync the application package on the device!
The launch will only sync the application package on the device!
黄啊码
2020/05/29
9020
发送自定义广播
这时候启动两个程序,都可以接收到按钮发出的消息,这时候还是标准广播,如果要改为有序广播需要在BroadcastTest项目点击事件中更改:
Dream城堡
2018/12/17
6460
【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块 / 应用模块 切换设置 )
GitHub 地址 : https://github.com/han1202012/Componentization
韩曙亮
2023/03/30
1.2K0
【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块 / 应用模块 切换设置 )
[android] 利用广播实现ip拨号
广播接收者,broadcast receiver,安卓系统在使用时会产生很多的事件,比如:短信到来,电量低,拨打电话等等
唯一Chat
2019/09/10
1.5K0
【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( DEX 文件准备 | 拷贝资源目录下的文件到内置存储区 | 配置清单文件 | 启动 DEX 文件中的组件 | 执行结果 )
在 dex_demo 应用 Module 中 , 创建 com.example.dex_demo.MainActivity2 类 ;
韩曙亮
2023/03/30
7890
【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( DEX 文件准备 | 拷贝资源目录下的文件到内置存储区 | 配置清单文件 | 启动 DEX 文件中的组件 | 执行结果 )
Unity中Android 触发home,回收覆盖在UnityPlayerActivity上层的activity的问题
最近在开发一个Android SDK的项目,提供给游戏方接入,发现游戏是unity引擎;正常游戏都是只有一个activity(继承UnityPlayerActivity),但是SDK业务交互上需要特定场景会弹出一个或者多个新的activity在UnityPlayerActivity上,这个时候如果安卓手机点击home回到桌面,再点击图标返回,发现除了UnityPlayerActivity,其他的activity都被回收了。
包子388321
2020/06/16
4.5K1
推荐阅读
相关推荐
adb 安装并运行 apk[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验