我有一个生成 DataMapper 类的自制库。
它们是通过注释生成的,@Singleton
以便@Inject
能够将它们注入我需要的地方。
但它不起作用的地方是当 Dagger 尝试创建依赖关系树时,此错误显示:
:data:kaptGenerateStubsDebugKotlin
e: /Users/me/myproject/data/build/tmp/kapt3/stubs/debug/com/myproject/data/di/DataComponent.java:11: error: [Dagger/MissingBinding] error.NonExistentClass cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract com.myproject.domain.repository.ContentRepository contentRepository();
^
error.NonExistentClass is injected at
com.myproject.data.repository.ContentDataRepository.<init>(…, myGeneratedDataMapper, …)
com.myproject.data.repository.ContentDataRepository is injected at
com.myproject.data.di.module.DataModule.contentRepository(contentDataRepository)
com.myproject.domain.repository.ContentRepository is provided at
com.myproject.data.di.DataComponent.contentRepository()
:data:kaptDebugKotlin
:data:kaptDebugKotlin FAILED
涉及的课程有:
DataModule(匕首模块)
@Module
class DataModule {
@Provides
@Singleton
fun contentRepository(contentDataRepository: ContentDataRepository): ContentRepository = contentDataRepository
}
DataComponent(匕首的组件):
@Singleton
@Component(modules = [DataModule::class])
interface DataComponent {
fun contentRepository(): ContentRepository
}
内容数据存储库
@Singleton
class ContentDataRepository @Inject constructor(
private val myGeneratedDataMapper: MyGeneratedDataMapper
) : ContentRepository {
...
}
MyGeneratedDataMapper
@Singleton
class MyGeneratedDataMapper @Inject constructor() {
...
}
问题是,如果我禁用 dagger 依赖项的 kapt gradle.build
,然后构建,然后启用它,然后构建,它就可以工作。
如果我做一个干净的+构建,它不起作用,同样的错误。我想让它连续工作。