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

Kotlin Compose+Hilt应用运行时遇DexPathList类找不到异常求助

Android应用运行时Dex类找不到问题(Kotlin+Compose+Hilt)

问题概况

  • 技术栈:Kotlin、Jetpack Compose、Hilt
  • 错误现象:构建成功,但运行时抛出java.lang.RuntimeException: Didn't find class on path: DexPathList,提示com.example.tstrade.MyApplication及Hilt生成的Hilt_MyApplication类找不到
  • 已确认:APK中实际存在该类,且尝试过GitHub上所有公开解决方案无效

完整错误日志

FATAL EXCEPTION: main
Process: com.example.tstrade, PID: 5771
java.lang.RuntimeException: Unable to instantiate application com.example.tstrade.MyApplication package com.example.tstrade: java.lang.ClassNotFoundException: Didn't find class "com.example.tstrade.MyApplication" on path: DexPathList[[dex file "/data/data/com.example.tstrade/code_cache/.overlay/base.apk/classes2.dex", zip file "/data/app/~~0aEP9N-to8KWK8_bUN3_qw==/com.example.tstrade-ICE0Zr5srgLSyF6wlZQibw==/base.apk"],nativeLibraryDirectories=[/data/app/~~0aEP9N-to8KWK8_bUN3_qw==/com.example.tstrade-ICE0Zr5srgLSyF6wlZQibw==/lib/x86_64, /system/lib64, /system_ext/lib64]]
at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1466)
at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1395)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6959)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.tstrade.MyApplication" on path: DexPathList[[dex file "/data/data/com.example.tstrade/code_cache/.overlay/base.apk/classes2.dex", zip file "/data/app/~~0aEP9N-to8KWK8_bUN3_qw==/com.example.tstrade-ICE0Zr5srgLSyF6wlZQibw==/base.apk"],nativeLibraryDirectories=[/data/app/~~0aEP9N-to8KWK8_bUN3_qw==/com.example.tstrade-ICE0Zr5srgLSyF6wlZQibw==/lib/x86_64, /system/lib64, /system_ext/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:51)
at android.app.Instrumentation.newApplication(Instrumentation.java:1282)
at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1458)
at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1395)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6959)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Suppressed: java.lang.NoClassDefFoundError: Failed resolution of:
Lcom/example/tstrade/Hilt_MyApplication;
at java.lang.VMClassLoader.findLoadedClass(Native Method)
at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
.. 16 more
Caused by: java.lang.ClassNotFoundException: Didn't find class
com.example.tstrade.Hilt_MyApplication" on path: DexPathList[[dex file "/data/data/com.example.tstrade/code_cache/.overlay/base.apk/classes2.dex", zip file "/data/app/~~0aEP9N-to8KWK8_bUN3_qw==/com.example.tstrade-ICE0Zr5srgLSyF6wlZQibw==/base.apk"],nativeLibraryDirectories=[/data/app/~~0aEP9N-to8KWK8_bUN3_qw==/com.example.tstrade-ICE0Zr5srgLSyF6wlZQibw==/lib/x86_64, /system/lib64, /system_ext/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 19 more 
Suppressed: [CIRCULAR REFERENCE: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/example/tstrade/Hilt_MyApplication;]

针对性排查与解决方案

1. 校验Hilt核心配置

  • 确认MyApplication类添加@HiltAndroidApp注解:
    @HiltAndroidApp
    class MyApplication : Application() {
        // ...
    }
    
  • 根目录build.gradle必须包含Hilt插件依赖:
    buildscript {
        dependencies {
            classpath "com.google.dagger:hilt-android-gradle-plugin:2.48" // 使用最新稳定版
        }
    }
    
  • app模块build.gradle需应用插件并添加依赖:
    plugins {
        id 'com.android.application'
        id 'org.jetbrains.kotlin.android'
        id 'kotlin-kapt'
        id 'dagger.hilt.android.plugin'
    }
    
    dependencies {
        implementation "com.google.dagger:hilt-android:2.48"
        kapt "com.google.dagger:hilt-android-compiler:2.48"
    }
    

2. 彻底清理构建缓存

  • 执行Gradle命令:
    ./gradlew clean build --refresh-dependencies
    
  • Android Studio中操作:File -> Invalidate Caches... -> Invalidate and Restart

3. 检查Dex分包配置

  • 若minSdk < 21,强制启用multidex:
    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    
    dependencies {
        implementation "androidx.multidex:multidex:2.0.1"
    }
    
  • 若minSdk >=21,检查是否存在自定义Dex规则导致Hilt生成类被排除在主Dex之外

4. 确认清单文件配置

  • AndroidManifest.xml中application标签的name必须指向自己的MyApplication类,而非Hilt生成的代理类:
    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.TSTrade">
        <!-- ... -->
    </application>
    

5. 验证Hilt生成类

  • 查看app/build/generated/source/kapt/debug/com/example/tstrade目录,确认Hilt_MyApplication.java存在,若不存在说明编译时Hilt未正确生成代理类,需检查注解配置或依赖版本兼容性

内容的提问来源于stack exchange,提问作者Denis Znevsky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:38:09