Android Studio中Main2Activity类找不到引发RuntimeException求助
解决Android中Main2Activity类找不到的ClassNotFoundException问题
报错日志
12/24 23:28:13: Launching 'app' on Nexus 6 API 24. $ adb shell am start -n "dab.scuffedbots/dab.scuffedbots.laya.Main2Activity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Connected to process 3779 on device 'Nexus_6_API_24 [emulator-5554]'. Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page. D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: dab.scuffedbots, PID: 3779 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{dab.scuffedbots/dab.scuffedbots.laya.Main2Activity}: java.lang.ClassNotFoundException: Didn't find class "dab.scuffedbots.laya.Main2Activity" on path: DexPathList[[zip file "/data/app/dab.scuffedbots-2/base.apk"],nativeLibraryDirectories=[/data/app/dab.scuffedbots-2/lib/x86, /data/app/dab.scuffedbots-2/base.apk!/lib/x86, /system/lib, /vendor/lib]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.ClassNotFoundException: Didn't find class "dab.scuffedbots.laya.Main2Activity" on path: DexPathList[[zip file "/data/app/dab.scuffedbots-2/base.apk"],nativeLibraryDirectories=[/data/app/dab.scuffedbots-2/lib/x86, /data/app/dab.scuffedbots-2/base.apk!/lib/x86, /system/lib, /vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:380) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.Instrumentation.newActivity(Instrumentation.java:1078) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2538) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
报错核心
系统无法实例化dab.scuffedbots.laya.Main2Activity,根源是ClassNotFoundException——在APK的Dex搜索路径中找不到该类文件。
解决方法
检查类的路径与包名
确认Main2Activity.java文件实际存放在项目的src/main/java/dab/scuffedbots/laya目录下,文件顶部的package声明为package dab.scuffedbots.laya;,避免包名拼写错误或文件放置路径错误。验证AndroidManifest.xml配置
检查清单文件中该Activity的声明是否正确,确保android:name属性与类的全限定名一致:<activity android:name="dab.scuffedbots.laya.Main2Activity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>如果使用相对路径(如
.laya.Main2Activity),需确保清单根节点的package属性为dab.scuffedbots。清理重建项目
在Android Studio中执行:- 点击菜单栏
Build->Clean Project - 点击
Build->Rebuild Project
清除旧编译缓存,重新生成正确的Dex文件。
- 点击菜单栏
检查MultiDex配置
若项目启用了MultiDex,确认:build.gradle(Module: app)中添加了multiDexEnabled true- 自定义Application类继承
MultiDexApplication,或在attachBaseContext方法中调用MultiDex.install(this)
清除设备缓存
卸载模拟器上的应用,重启模拟器后重新安装运行,避免旧APK残留缓存干扰。检查混淆规则
若启用了ProGuard,确保proguard-rules.pro中未误删除该类:-keep class dab.scuffedbots.laya.Main2Activity { *; }
内容的提问来源于stack exchange,提问作者niel
相关产品推荐
相关产品推荐

