You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Multiplatform桌面应用Gradle传递JVM参数失效问题

Kotlin Multiplatform桌面应用JavaExec任务参数无法传递的解决方法

问题根源

从你打印的任务日志能看到,项目里存在run、runRelease、desktopRun三个JavaExec类型任务,但执行./gradlew run时,实际触发的并非你配置的目标任务,或者Compose Desktop等插件在后续配置阶段覆盖了你设置的args和jvmArgs值,导致参数未生效。

解决方案

1. 直接配置desktopRun任务

项目中实际负责启动桌面应用的是desktopRun任务,而非根级run任务,直接针对该任务配置即可:

tasks.named<JavaExec>("desktopRun") {
    args = listOf("test")
    jvmArgs = listOf("-Dtest=true")
}

配置完成后执行./gradlew desktopRun,参数即可正常传递到应用中。

2. 用doFirst确保参数不被覆盖

如果插件后续配置仍会覆盖你的设置,可以在任务执行前动态注入参数,这种方式优先级更高:

tasks.withType<JavaExec> {
    doFirst {
        args = listOf("test")
        jvmArgs = listOf("-Dtest=true")
    }
}

也可以仅针对desktopRun任务设置:

tasks.named<JavaExec>("desktopRun") {
    doFirst {
        args.add("test")
        jvmArgs.add("-Dtest=true")
    }
}

3. 命令行直接传递参数(临时测试场景)

无需修改构建脚本,直接通过命令行传递参数:

  • 传递程序运行参数:
./gradlew desktopRun --args="test"
  • 传递JVM参数:
./gradlew desktopRun -Dtest=true

内容的提问来源于stack exchange,提问作者astroboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:38:13