集成Hilt到Android应用时出现ClassNotFoundException错误
解决Hilt集成时的ClassNotFoundException: com.example.stockmarket.App
错误日志
java.lang.RuntimeException: Unable to instantiate application com.example.stockmarket.App package com.example.stockmarket: java.lang.ClassNotFoundException: Didn't find class "com.example.stockmarket.App"
排查与修复步骤
1. 修复KSP版本缺失问题
你的libs.versions.toml中未定义ksp版本,但插件配置里引用了该版本,这会导致编译异常,间接引发类找不到的问题。在[versions]块中添加与Kotlin版本匹配的KSP版本(Kotlin 2.0.0对应KSP 2.0.0-1.0.21):
[versions] # 保留原有版本配置,新增以下行 ksp = "2.0.0-1.0.21"
2. 修正Hilt与AGP、Kotlin的版本兼容性
Hilt 2.44与Kotlin 2.0.0存在兼容风险,建议调整为稳定匹配的版本组合:
[versions] agp = "8.4.1" kotlin = "1.9.22" # AGP 8.4.1推荐的稳定Kotlin版本 hilt = "2.51.1" # 最新稳定版Hilt hilt-compile = "1.2.0" hilt_lifecycle_viewmodel = "1.0.0-alpha03" hilt_navigation_compose = "1.2.0" ksp = "1.9.22-1.0.17" # 匹配Kotlin 1.9.22的KSP版本
3. 验证App类的位置与包名
- 确认
App类位于src/main/java/com/example/stockmarket/目录下,包声明为package com.example.stockmarket; - 检查Manifest中的
android:name=".App"是否正确,若App类不在根包下,需填写完整路径如android:name="com.example.stockmarket.App"
4. 清理缓存并重建项目
执行以下操作彻底清理编译缓存后重新构建:
- Android Studio中点击
File > Invalidate Caches... > Invalidate and Restart - 或在终端运行命令:
./gradlew clean ./gradlew assembleDebug
5. 检查混淆配置(若启用)
如果是Release版本,确保混淆规则保留Application类与Hilt生成的代码,在proguard-rules.pro中添加:
-keep class com.example.stockmarket.App { *; } -keep @dagger.hilt.android.HiltAndroidApp class * -keep class * extends dagger.hilt.android.HiltAndroidApp
内容的提问来源于stack exchange,提问作者Amardurai
相关产品推荐
相关产品推荐

