2017-10-17 3 views
1

sparkとdagger 2を理解するためのアプリケーションを作成しようとしていましたが、生成されたダガーファイルを使用できませんでした。ダガー2:Intellij Idea(Kotlin)で生成クラスを見つけることができません

このような質問は複数ありますが、いずれかを使用して問題を解決することはできません。

私のプロジェクトは、build.gradleファイルがそれは私が注入しようとしていますSparkSetup.ktクラスのこの

... 
apply plugin: 'kotlin-kapt' 
dependencies { 
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" 
    compile "com.sparkjava:spark-kotlin:$spark_kotlin_version" 
    compile "org.slf4j:slf4j-log4j12:$slf4j_version" 
    compile "com.google.dagger:dagger:$dagger_version" 
    kapt "com.google.dagger:dagger-compiler:$dagger_version" 

    testCompile group: 'junit', name: 'junit', version: '4.12' 
} 
.... 

のように見えますhere

githubので見つけることができます。このためのモジュールとコンポーネントSetupModule.kt

内容は、この

@Module 
class SetUpModule { 
    @Provides 
    @Singleton 
    fun provideSparkSetup() : SparkSetup { 
     return SparkSetup() 
    } 
} 

のように見え、これは理想的にはそこAppComponent.ktクラス

@Singleton 
@Component(modules = arrayOf(SetUpModule::class)) 
interface AppComponent { 
    fun sparkSetup() : SparkSetup 
} 

あるco.pissarra.util.daggerパッケージ内に存在している名前で、クラスでなければなりませんDaggerAppComponent inbufはビルドディレクトリ(生成されたクラスとクラスの両方)に存在します。しかし、これは私がプロジェクト内のどこでもDaggerAppComponentを使用していない場合にのみ有効です。私がこれを試してみると、intellijのアイデアはUnresolved reference: DaggerAppComponentというエラーを出し、プロジェクトもビルドできません。

ファイルContainerRunner.ktを変更したいと思いますが、SparkSetup().init()を直接呼び出す代わりにDIを使用したいと思います。

+1

私はIdeaでDaggerを使用しようとしました。生成されたものはおそらくビルドフォルダにあります。あなたはあなたのgradleファイルのあなたのソースセットにそれを加えなければなりません。 – Joshua

答えて

2

KT-17923のようになります。 Kotlin IDEプラグインのバージョンを1.1.60または1.2-Betaに更新してください。

また、回避策として、手動で生成されたディレクトリを指定することができます:あなたはbuild.gradleにこれを追加した後の再インポートプロジェクトに必要

apply plugin: 'idea' 
idea { 
    module { 
     sourceDirs += file('build/generated/source/kapt/main') 
     generatedSourceDirs += file('build/generated/source/kapt/main') 
    } 
} 

注意を。

奇妙に思えるのは、ビルド中にエラーも再現することだけです。 DaggerAppComponentが、それを参照するクラス(またはimportディレクティブ)と同じパッケージに含まれているかどうかを確認してください。

関連する問題