gpt4 book ai didi

java - 无法将 Kotlin 服务注入(inject) Java 类

转载 作者:行者123 更新时间:2023-12-02 12:56:18 25 4
gpt4 key购买 nike

我有以下 Kotlin 服务:

@Service
open class KotlinServiceImpl(private val myRepository: MyRepository) : MyService { ... }

试图获取它的 Java 类:

private final MyService MyService;

public MyController(MyService myService) {
this.myService = myService;
}

错误:

Parameter 0 of constructor in MyController required a bean of type 'MyService' that could not be found.

我正在使用 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 接口(interface) MyService 转换为 Kotlin 时,出现以下错误:

java.lang.NoClassDefFoundError: com/.../MyService

仅使用 Java 类即可解决问题

最佳答案

该类在运行时不可用。我终于注意到我们的构建文件定义了它自己的 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" 添加到类路径中的文件中。

我希望这对 future 的用户有所帮助。

关于java - 无法将 Kotlin 服务注入(inject) Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61931087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com