簡體   English   中英

無法將 Kotlin 服務注入 Java class

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM