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

Android Kotlin项目Dagger Hilt注入致Activity实例化失败求助

Android项目Dagger Hilt注入导致ClassNotFoundException问题解决

使用Kotlin开发Android项目,结合Dagger Hilt做依赖注入,启动时报ClassNotFoundException,找不到LoginUser和对应的Hilt_LoginUser类,暂未使用Room库,相关代码及错误如下:

相关代码

Activity代码

@AndroidEntryPoint
class LoginUser : AppCompatActivity() {
    private lateinit var binding: ActivityLoginUserBinding
    private val loginUserViewModel: LoginUserViewModel by viewModels()
    //Metodos onCreate y demas
}

ViewModel及Repository代码

@HiltViewModel
class LoginUserViewModel @Inject constructor(private val getUserRepostory : UsuarioLocalRepository) : ViewModel() {
    //Logic Programming
}

class UsuarioLocalRepository @Inject constructor(private val usuarioLocal: IUsuarioLocalDao) {
    //Logic Programming
}

AndroidManifest配置

<activity
        android:name=".ui.loginUser.LoginUser"
        android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

启动错误日志

FATAL EXCEPTION: main
Process: com.evalverde.appintegration, PID: 31251
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.evalverde.appintegration/com.evalverde.appintegration.ui.loginUser.LoginUser}: java.lang.ClassNotFoundException: Didn't find class "com.evalverde.appintegration.ui.loginUser.LoginUser" on path: 
DexPathList[[zip file "/data/app/~~gWf1BI8VZtJnAoRgV6g0_Q==/com.evalverde.appintegration-_Q0ym-niXMDLSYaQ8csCxQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~gWf1BI8VZtJnAoRgV6g0_Q==/com.evalverde.appintegration-_Q0ym-niXMDLSYaQ8csCxQ==/lib/arm64, /system/lib64, /system/system_ext/lib64]]

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4102)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4403)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:104)
    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:2498)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:226)
    at android.os.Looper.loop(Looper.java:313)
    at android.app.ActivityThread.main(ActivityThread.java:8855)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.evalverde.appintegration.ui.loginUser.LoginUser" on path: DexPathList[[zip file "/data/app/~~gWf1BI8VZtJnAoRgV6g0_Q==/com.evalverde.appintegration-_Q0ym-niXMDLSYaQ8csCxQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~gWf1BI8VZtJnAoRgV6g0_Q==/com.evalverde.appintegration-_Q0ym-niXMDLSYaQ8csCxQ==/lib/arm64, /system/lib64, /system/system_ext/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
    at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
    at 
    Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/evalverde/appintegration/ui/loginUser/Hilt_LoginUser;
        at java.lang.VMClassLoader.findLoadedClass(Native Method)
        at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
        ... 17 more
    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.evalverde.appintegration.ui.loginUser.Hilt_LoginUser" on path: DexPathList[[zip file "/data/app/~~gWf1BI8VZtJnAoRgV6g0_Q==/com.evalverde.appintegration-_Q0ym-niXMDLSYaQ8csCxQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~gWf1BI8VZtJnAoRgV6g0_Q==/com.evalverde.appintegration-_Q0ym-niXMDLSYaQ8csCxQ==/lib/arm64, /system/lib64, /system/system_ext/lib64

解决步骤

  • 确认Hilt配置完整性:
    1. 根项目build.gradle(或build.gradle.kts)中添加插件依赖:
      buildscript {
          dependencies {
              classpath 'com.google.dagger:hilt-android-gradle-plugin:2.44'
          }
      }
      
    2. app模块build.gradle中应用插件并添加依赖:
      plugins {
          id 'kotlin-kapt'
          id 'dagger.hilt.android.plugin'
      }
      
      dependencies {
          implementation 'com.google.dagger:hilt-android:2.44'
          kapt 'com.google.dagger:hilt-android-compiler:2.44'
          implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
          kapt 'androidx.hilt:hilt-compiler:1.0.0'
      }
      
  • 检查Application类配置:
    确保自定义Application类添加@HiltAndroidApp注解,且在Manifest中注册:
    @HiltAndroidApp
    class MyApplication : Application() { }
    
    Manifest中补充:
    <application
        android:name=".MyApplication"
        ...>
        ...
    </application>
    
  • 清理重建项目:
    执行Build > Clean Project,再执行Build > Rebuild Project,确保Hilt生成的Hilt_LoginUser类被正确编译进APK。
  • 检查多Dex配置:
    若开启多Dex,需在app模块build.gradle中启用:
    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    dependencies {
        implementation 'androidx.multidex:multidex:2.0.1'
    }
    
  • 验证包名一致性:
    确认LoginUser类的实际包名与Manifest中声明的.ui.loginUser.LoginUser完全匹配,避免大小写或路径拼写错误。

内容的提问来源于stack exchange,提问作者Erick Valverde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:14:53