【发布时间】:2017-10-17 19:49:16
【问题描述】:
我试图编写一个应用程序来理解 spark 和 dagger 2。但无法使用生成的 dagger 文件。
有多个与此类似的问题,但我无法使用其中任何一个来解决问题。
我的项目可以在github上找到here
build.gradle 文件如下所示
...
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'
}
....
这是我试图注入的SparkSetup.kt 类。 co.pissarra.util.dagger 包中存在此模块和组件
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
}
理想情况下,应该有一个名为DaggerAppComponent 的类,它实际上存在于构建目录中(生成目录和类)。但这仅在我不在项目中的任何地方使用DaggerAppComponent 时才有效。如果我尝试使用它,intellij idea 会给出Unresolved reference: DaggerAppComponent 的错误,并且项目也无法构建。
我想更改文件ContainerRunner.kt,而不是直接调用SparkSetup().init(),我想通过DI来完成。
【问题讨论】:
-
我曾尝试将 Dagger 与 Idea 结合使用。生成的可能在构建文件夹中。您必须将其添加到您的 gradle 文件中的源集中。
标签: java apache-spark intellij-idea kotlin dagger-2