从Java转换到Kotlin之后,Dagger的模块不工作

我用Dagger 2为Android创建了简单的应用程序。它有一个共享对象和一个模块。 该模块是:

@Module public class MyModule { @Provides @Singleton public Hren providesHren() { return new Hren(); } } 

这个模块工作。 但是当我将它转换为Kotlin时,我得到编译时错误:

 > Task :app:compileDebugJavaWithJavac ...../DaggerMyApplicationComponent.java:26: error: cannot find symbol DoubleCheck.provider(MyModule_ProvidesHrenFactory.create(builder.myModule)); ^ symbol: variable MyModule_ProvidesHrenFactory location: class DaggerMyApplicationComponent 1 error 

转换后的这个模块:

 @Module class MyModule { @Provides @Singleton fun providesHren(): Hren { return Hren() } } 

怎么了? 为什么我得到这个错误? 怎么解决?

确保您已经正确配置了您的项目,以支持Kotlin的注释。

在你的build.gradle(Module:app)文件中,检查你是否应用了以下设置:

  • 套用插件:’kotlin-kapt’
  • kapt“com.google.dagger:dagger-compiler:dagger_version”
  • kapt“com.google.dagger:dagger-android-processor:dagger_version”

然后,清理并重建您的项目:

  • ./gradlew clean && ./gradlew build