匕首找不到其他注释处理器生成的类
我写了一个简单的注释处理器(只是为了好玩),它将生成一些我在以前的项目中编写的样板代码。它实际上通过收集活动类上的注释来生成一个模块, 如下所示
@Module
abstract class ActivityInjectorModule {
@ContributesAndroidInjector
abstract fun providesMain2Activity(): Main2Activity
@ContributesAndroidInjector
abstract fun providesMainActivity(): MainActivity
}
但是,当我用匕首运行它时,匕首似乎找不到由我的注释处理器生成的类。虽然,类是生成的并存在于生成的目录中,但我可以在源代码中使用它,但是在编译时,dagger会产生以下异常。任何专家建议?
error: cannot find symbol
@dagger.Component(modules = {dagger.android.AndroidInjectionModule.class, com.mallaudin.daggietest.di.AppModule.class, ActivityInjectorModule.class})
^
symbol: class ActivityInjectorModule
这是主要的应用组件。
@Singleton
@Component(
modules = [
AndroidInjectionModule::class,
AppModule::class,
ActivityInjectorModule::class
]
)
interface AppComponent : AndroidInjector<App> {
@Component.Builder
interface Builder {
fun addContext(@BindsInstance ctx: Context): Builder
fun build(): AppComponent
}
}
ActivityInjectorModule 类由注释处理器生成,并存在于生成的目录中。
应用程序类
class App : DaggerApplication() {
override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
return DaggerAppComponent.builder().addContext(this).build()
}
}
一切都很完美,如果我自己创建生成的类。不知何故,在编译时,匕首在由我的注释处理器生成时无法找到该类。
在尤里·库利科夫的回答之后,
您可以看到生成的文件位于同一包中,但也使用完全限定名引用。仍然匕首报告错误。
这是github存储库的链接,如果有人想实验