如何解决Unciv项目中':buildSrc:compileKotlin'任务执行失败的错误?
解决Unciv编译时“Unknown Kotlin JVM target: 21”错误的方法
核心问题分析
该错误是因为当前Gradle使用的JDK版本不支持Kotlin指定的JVM Target 21,或者项目配置的target版本与本地JDK不匹配。以下是具体解决步骤:
步骤1:确认本地JDK版本
先检查当前系统安装的JDK版本,确保版本支持目标JVM版本(若要使用target 21,需安装JDK 21及以上;若降级target,需对应匹配的JDK):
java -version javac -version
步骤2:修改项目Kotlin编译配置
错误出现在:buildSrc:compileKotlin任务,需同时修改主项目和buildSrc模块的配置:
1. 主项目配置(根目录下的build.gradle.kts或build.gradle)
- 若使用Kotlin DSL(
.kts):
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions { // 改为你本地JDK支持的版本,比如17或21 jvmTarget = "17" } }
- 若使用Groovy DSL(
.gradle):
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { kotlinOptions { jvmTarget = "17" } }
2. buildSrc模块配置(buildSrc/build.gradle.kts或buildSrc/build.gradle)
- Kotlin DSL示例:
plugins { `kotlin-dsl` } kotlin { jvmToolchain { // 匹配本地JDK版本 languageVersion.set(JavaLanguageVersion.of(17)) } }
或者直接指定jvmTarget:
tasks.withType<KotlinCompile> { kotlinOptions.jvmTarget = "17" }
步骤3:强制Gradle使用指定JDK
如果Gradle仍指向错误JDK,可通过以下方式强制指定:
- 永久配置:在项目根目录的
gradle.properties中添加:
org.gradle.java.home=/path/to/your/jdk
(Linux下典型路径如/usr/lib/jvm/java-21-openjdk-amd64,根据实际安装路径修改)
- 临时指定:执行编译命令时附加参数:
./gradlew desktop:dist -Dorg.gradle.java.home=/path/to/your/jdk
步骤4:清理缓存重新编译
清理Gradle缓存,避免旧配置干扰:
./gradlew clean rm -rf .gradle
之后重新执行编译命令:
./gradlew desktop:dist
内容的提问来源于stack exchange,提问作者Whitesnack
相关产品推荐
相关产品推荐

