[英]Can't inject a Kotlin service into a Java class
我有以下 Kotlin 服務:
@Service
open class KotlinServiceImpl(private val myRepository: MyRepository) : MyService { ... }
試圖得到它的 Java class :
private final MyService MyService;
public MyController(MyService myService) {
this.myService = myService;
}
錯誤:
MyController 中構造函數的參數 0 需要找不到類型為“MyService”的 bean。
我正在使用 Gradle,並具有所需的依賴項:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.3.72'
並且還應用了相關的 Kotlin 插件:
plugins {
id 'org.jetbrains.kotlin.jvm'
}
當我將 Java 接口MyService
轉換為 Kotlin 時,出現以下錯誤:
java.lang.NoClassDefFoundError: com/.../MyService
僅使用 Java 類可以解決問題。
class 在運行時不可用。 我終於注意到我們的構建文件定義了它自己的run
任務:
run {
dependsOn pathingJar
doFirst {
classpath = files(
"$buildDir/classes/java/main",
"$buildDir/resources/main",
pathingJar.archivePath)
}
Map<String, String> map = loadExecutionProperties()
map.put("SPRING_PROFILES_ACTIVE", "...")
map.put("APP_NAME", "app-name")
environment(map)
}
所以我需要在類路徑中的文件中添加"$buildDir/classes/kotlin/main"
。
我希望這將有助於未來的用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.