Android Studio启动报错ClassNotFoundException,请求技术协助
解决ClassNotFoundException导致无法启动Activity的问题
报错信息
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.aromproject6, PID: 13385 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.aromproject6/com.example.aromproject6.StartActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.aromproject6.StartActivity" on path: DexPathList[[zip file "/data/app/~~gSEQsY1NRFD7fu96ddB6lA==/com.example.aromproject6--sMR1Ru1-lfEOAG_4i260A==/base.apk"],nativeLibraryDirectories=[/data/app/~~gSEQsY1NRFD7fu96ddB6lA==/com.example.aromproject6--sMR1Ru1-lfEOAG_4i260A==/lib/x86_64, /system/lib64, /system_ext/lib64]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3613) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7870) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.aromproject6.StartActivity" on path: DexPathList[[zip file "/data/app/~~gSEQsY1NRFD7fu96ddB6lA==/com.example.aromproject6--sMR1Ru1-lfEOAG_4i260A==/base.apk"],nativeLibraryDirectories=[/data/app/~~gSEQsY1NRFD7fu96ddB6lA==/com.example.aromproject6--sMR1Ru1-lfEOAG_4i260A==/lib/x86_64, /system/lib64, /system_ext/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45) at android.app.Instrumentation.newActivity(Instrumentation.java:1285) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3600) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7870) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
排查与解决步骤
检查Manifest配置
打开AndroidManifest.xml,确认StartActivity的<activity>标签中android:name属性值为com.example.aromproject6.StartActivity,拼写、大小写完全匹配;同时确保该Activity包含启动入口的intent-filter:<activity android:name=".StartActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>验证Activity类的包路径
找到StartActivity的源码文件,检查顶部的包声明是否为package com.example.aromproject6;,确认文件没有被误放在其他包目录下,文件名也没有拼写错误。启用MultiDex支持
如果项目方法数超过65536,需开启MultiDex:- 在模块级
build.gradle中添加配置:android { defaultConfig { multiDexEnabled true } } dependencies { implementation 'androidx.multidex:multidex:2.0.1' } - 自定义Application类继承
MultiDexApplication,或者在现有Application类的attachBaseContext方法中添加:@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
- 在模块级
深度清理与重建项目
- 执行
File > Invalidate Caches... > Invalidate and Restart重启Android Studio; - 手动删除项目根目录的
.gradle、build文件夹,以及app模块下的build文件夹,然后执行Build > Rebuild Project。
- 执行
检查构建变体与混淆规则
- 确认当前选择的Build Variant是正确的,没有误选不包含该Activity的变体;
- 如果是调试模式,检查是否意外开启了混淆;如果是发布模式,确认ProGuard规则没有误移除
StartActivity,可添加规则:-keep class com.example.aromproject6.StartActivity { *; }
内容的提问来源于stack exchange,提问作者조성혁
相关产品推荐
相关产品推荐

