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