You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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中执行:

    1. 点击菜单栏Build -> Clean Project
    2. 点击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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:45:20