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配置完整性:
- 根项目
build.gradle(或build.gradle.kts)中添加插件依赖:buildscript { dependencies { classpath 'com.google.dagger:hilt-android-gradle-plugin:2.44' } } - 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中注册:
Manifest中补充:@HiltAndroidApp class MyApplication : Application() { }<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
相关产品推荐
相关产品推荐

