Android Hilt出现error.NonExistentClass错误,请求问题排查
Android Hilt 依赖注入错误排查:NonExistentClass 关联 LazyClassKey
问题描述
我正在学习Android Hilt,已为Activity添加@AndroidEntryPoint注解,ViewModel配置了@HiltViewModel注解,同时创建了Module类。但目前遇到如下错误:
依赖追踪:
=> element (CLASS): kr.co.example.viewmodel.TestViewModel_HiltModules.BindsModule
=> element (METHOD): binds(kr.co.example.viewmodel.TestViewModel)
=> annotation type: LazyClassKey
=> type (ERROR annotation type): error.NonExistentClass
相关代码截图:
- [Activity代码截图]
- [ViewModel代码截图]
- [Module代码截图]
排查及解决办法
1. 统一Hilt相关依赖版本
检查项目根目录build.gradle和模块build.gradle中所有Hilt相关依赖的版本是否一致,包括hilt-android、hilt-compiler、hilt-lifecycle-viewmodel等,版本不匹配容易触发此类编译错误。
2. 检查ViewModel构造函数
确认TestViewModel的构造函数是否添加了@Inject注解,且构造函数的所有参数都能被Hilt提供(参数类要么自带@Inject构造,要么在Module中完成绑定)。
3. 验证Module配置正确性
- 确保Module类添加了
@Module和@InstallIn注解,根据依赖作用域选择合适的Component(如给ViewModel提供依赖可使用@InstallIn(SingletonComponent::class))。 - 检查
@Binds注解的绑定方法,确认返回类型与参数类型的对应关系,避免类名拼写错误。
4. 清理编译缓存
执行以下操作后重新编译:
- 点击
Build -> Clean Project,再执行Build -> Rebuild Project - 删除项目目录下的
.gradle、.idea文件夹及build目录,重新同步Gradle项目
5. 补充必要依赖
确保模块build.gradle中添加了ViewModel与Hilt结合所需的依赖:
implementation "com.google.dagger:hilt-android:对应版本号" kapt "com.google.dagger:hilt-compiler:对应版本号" implementation "androidx.hilt:hilt-lifecycle-viewmodel:对应版本号" kapt "androidx.hilt:hilt-compiler:对应版本号"
内容的提问来源于stack exchange,提问作者Juro
相关产品推荐
相关产品推荐

