为什么 Gradle 在我的 Kotlin 多平台项目中的 :linkDebugTestLinux 上失败?
Why is Gradle failing on :linkDebugTestLinux in my Kotlin multiplatform project?
我正在将 C# 库移植到 Kotlin 以利用多平台。 运行 build
任务时,它在子任务 linkDebugTestLinux
.
中失败
对于上下文,我在 Manjaro 上使用 IDEA Ultimate。我确定我的代码没有任何问题,因为 compileKotlinLinux
完成时没有错误。
"linkDebugTestLinux" 的 DDG 结果为零,"konan could not find home" 或 "kotlin native ..." 没有任何帮助。在将官方文档中不完整和过时的示例拼接了几个小时后,我放弃了。
我的build.gradle.kts
:
plugins {
kotlin("multiplatform") version "1.3.40"
}
repositories {
mavenCentral()
}
dependencies {
commonMainImplementation("org.jetbrains.kotlin:kotlin-stdlib")
commonTestImplementation("org.jetbrains.kotlin:kotlin-test-common")
commonTestImplementation("org.jetbrains.kotlin:kotlin-test-annotations-common")
}
kotlin {
// js() // wasn't the issue
linuxX64("linux")
}
没有参数的任务 build
的输出:
> Configure project :
Kotlin Multiplatform Projects are an experimental feature.
> Task :compileKotlinLinux
[...unused param warnings...]
> Task :compileKotlinMetadata
[...unused param warnings...]
> Task :metadataMainClasses
> Task :metadataJar
> Task :assemble
> Task :linuxProcessResources NO-SOURCE
> Task :linuxMainKlibrary
> Task :linkDebugTestLinux FAILED
e: Could not find "/home/username/" in [/home/username/path/to/the/repo, /home/username/.konan/klib, /home/username/.konan/kotlin-native-linux-1.3/klib/common, /home/username/.konan/kotlin-native-linux-1.3/klib/platform/linux_x64].
[...snip...]
BUILD FAILED in 16s
4 actionable tasks: 4 executed
Process 'command '/usr/lib/jvm/java-8-openjdk/bin/java'' finished with non-zero exit value 1
在样板文件中我省略了它建议使用 --debug
,所以我上传了那个 here。
经过一番排查,推测问题出在路径上。在调试日志中,您得到了 /home/yoshi/,/
片段。至于这个目录名是意外的,编译器将这个 ,
解释为 lib 名称之间的分隔符。因此,它试图找到库 /home/yoshi/
,但显然不可用。
现在,我建议您将目录名称更改为简单的名称。
我正在将 C# 库移植到 Kotlin 以利用多平台。 运行 build
任务时,它在子任务 linkDebugTestLinux
.
对于上下文,我在 Manjaro 上使用 IDEA Ultimate。我确定我的代码没有任何问题,因为 compileKotlinLinux
完成时没有错误。
"linkDebugTestLinux" 的 DDG 结果为零,"konan could not find home" 或 "kotlin native ..." 没有任何帮助。在将官方文档中不完整和过时的示例拼接了几个小时后,我放弃了。
我的build.gradle.kts
:
plugins {
kotlin("multiplatform") version "1.3.40"
}
repositories {
mavenCentral()
}
dependencies {
commonMainImplementation("org.jetbrains.kotlin:kotlin-stdlib")
commonTestImplementation("org.jetbrains.kotlin:kotlin-test-common")
commonTestImplementation("org.jetbrains.kotlin:kotlin-test-annotations-common")
}
kotlin {
// js() // wasn't the issue
linuxX64("linux")
}
没有参数的任务 build
的输出:
> Configure project :
Kotlin Multiplatform Projects are an experimental feature.
> Task :compileKotlinLinux
[...unused param warnings...]
> Task :compileKotlinMetadata
[...unused param warnings...]
> Task :metadataMainClasses
> Task :metadataJar
> Task :assemble
> Task :linuxProcessResources NO-SOURCE
> Task :linuxMainKlibrary
> Task :linkDebugTestLinux FAILED
e: Could not find "/home/username/" in [/home/username/path/to/the/repo, /home/username/.konan/klib, /home/username/.konan/kotlin-native-linux-1.3/klib/common, /home/username/.konan/kotlin-native-linux-1.3/klib/platform/linux_x64].
[...snip...]
BUILD FAILED in 16s
4 actionable tasks: 4 executed
Process 'command '/usr/lib/jvm/java-8-openjdk/bin/java'' finished with non-zero exit value 1
在样板文件中我省略了它建议使用 --debug
,所以我上传了那个 here。
经过一番排查,推测问题出在路径上。在调试日志中,您得到了 /home/yoshi/,/
片段。至于这个目录名是意外的,编译器将这个 ,
解释为 lib 名称之间的分隔符。因此,它试图找到库 /home/yoshi/
,但显然不可用。
现在,我建议您将目录名称更改为简单的名称。