Dagger2 и Kotlin запускают неудачные причины: app: compileDebugKotlinAfterJava

Я пытаюсь реализовать Dagger 2 в тестовом приложении, чтобы изучить чистую архитектуру и инъекцию зависимостей на языке Kotlin.

РЕДАКТИРОВАТЬ :
Я могу скомпилировать благодарность @Logain, но у меня всегда есть проблема статического члена с Dagger в моем синглетоне (см. Ниже мой TaskWorker ), поэтому я ищу, как я могу исправить эту ошибку

Но у меня проблема, мой DaggerComponent хорошо сгенерирован, когда я перестраиваю , но не тогда, когда я хочу запускать свое приложение для тестирования, он терпит неудачу и исчезает. Он не справляется с этой ошибкой:

Ошибка: (21, 29). Неразрешенная ссылка: DaggerInjectorComponent

Ошибка: выполнение выполнено для задачи «: app: compileDebugKotlinAfterJava».

> Ошибка компиляции. Подробнее см. Журнал

Когда я выполняю пересоединение, эта задача передается правильно

:app:compileDebugKotlinAfterJava 

Поэтому я не понимаю, почему он терпит неудачу.

Вот мой InjectorComponent :

 @Singleton @Component(modules = arrayOf(ContextDaggerModule::class, LocalStoreDaggerModule::class)) interface InjectorComponent { fun inject(realmLocalStore: RealmLocalStore) fun inject(taskWorker: TaskWorker) } 

ContectDaggerModule :

 @Module class ContextDaggerModule (val app: Application) { @Provides @Singleton fun provideContext(): Context = app @Provides @Singleton fun provideApplication(): Application = app @Provides @Singleton fun provideResources(): Resources = app.resources } 

LocalStoreDaggerModule :

 @Module class LocalStoreDaggerModule { @Provides @Singleton fun provideLocalStore(context: Context): LocalStore { return RealmLocalStore(context) } } 

Я думаю, что проблема вызвана тем, что я вставляю зависимости в Object-декларации, но все элементы статичны, а кинжал не оценивает это. Итак, я пытаюсь взломать его с помощью простого переопределения getter и ввода данных, но nop.

Вот мой «взломать»:

 object TaskWorker { // @Inject lateinit var localStore: LocalStore // Not work cause it's a static variable var localStore: LocalStore? = null @Inject get() = localStore // some cool function } 

Я следую этому коду и этому руководству

Я использую эти зависимости:

 // Dagger2 compile 'com.google.dagger:dagger:2.11' kapt 'com.google.dagger:dagger-compiler:2.11' provided 'org.glassfish:javax.annotation:10.0-b28' 

Убедитесь, что вы используете:

 kapt { generateStubs = true } 

Из-за некоторых ограничений на kapt

Или просто попробуйте:

 annotationProcessor 'com.google.dagger:dagger-compiler:2.11' 

Вам это не нужно.

 kapt { generateStubs = true } 

Просто примените плагин:

 apply plugin: 'kotlin-kapt' 

и добавьте зависимости:

 compile androidDependencies.dagger2 compile androidDependencies.dagger2Android kapt androidDependencies.dagger2Kapt 

иногда задачи терпят неудачу с такими ошибками. Попробуйте clean и в качестве последнего средства использовать invalidate and restart . В большинстве случаев он работает.