我正在编写 Dagger 2 教程。我正在使用 vscode 和
build.gradle.kts
。我可以在我的 build
文件夹中看到 Dagger 前缀类已经生成。但是,vscode LSP 无法检测到它们,并且我无法运行 main 函数而不收到错误提示 DaggerCommandRouterFactory cannot be resolved
。
build.gradle.kts
plugins {
kotlin("jvm") version "1.7.10"
kotlin("kapt") version "1.7.10"
application
}
repositories {
mavenCentral()
google() // required for Dagger
}
application {
mainClass.set("dagger.CommandLineAtm")
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>() {
kotlinOptions.jvmTarget = "17"
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}
dependencies {
val daggerVersion = "2.46.1"
implementation("com.google.dagger:dagger:${daggerVersion}")
implementation("javax.inject:javax.inject:1");
implementation("org.junit.jupiter:junit-jupiter-api:5.5.1");
kapt("com.google.dagger:dagger-compiler:${daggerVersion}")
testImplementation("org.jetbrains.kotlin:kotlin-test:1.7.10")
}
kapt {
mapDiagnosticLocations = true // include the Kotlin files into error reports
}
文件夹结构
- dagger
- app
- src/main
- java/dagger
- Command.java
- CommandLineAtm.java
- CommandRouter.java
- CommandRouterFactory.java
- Result.java
- Status.java
- build // Listing subset
- generated
- source
- kapt
- main/dagger
- CommandRouter_Factory.java
- DaggerCommandRouterFactory.java
这是我在 vscode 的 gradle 选项卡中看到的屏幕截图:
我点击
build
,构建成功
如果我单击
application > run
,我会收到一条消息,提示 build successful
,但应用程序实际上并未运行。
如果我通过单击
run
中 main
函数上方的 CommandLineAtm
来运行,则会收到错误
PS C:\Users\xyz\projects\dagger> c:; cd 'c:\Users\xyz\projects\dagger'; & 'C:\Users\xyz\AppData\Local\Programs\Eclipse Adoptium\jdk-17.0.7.7-hotspot in\java.exe' '@C:\Users\xyz\AppData\Local\Tem