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

使用Gradle Kotlin DSL任务带参数执行外部Jar文件遇问题

修复Gradle Exec任务运行外部Jar并传参的问题

你的Gradle任务代码存在两个关键问题,导致无法正常运行外部Jar:

  1. 错误指定可执行程序:executable(jarFilePath)把Jar文件设为了要执行的程序,但实际应该执行的是java命令,Jar文件是作为java的参数传入的。
  2. 参数格式错误:把多个命令行参数打包成单个字符串("-app AppName -i $folder -o $folder"),这会让Java把整个字符串当成一个参数传递给Jar,而Jar无法正确解析这些分散的参数。

修正后的代码

tasks.register("myGradleTask", Exec::class) {
    val folder = "${rootProject.rootDir}/myFolder/"
    val jarFilePath = "${rootProject.rootDir}/Scripts/MyExternalJarFile.jar"
    
    // 指定执行程序为java
    executable("java")
    // 每个命令行参数单独作为数组元素,确保被正确解析
    commandLine(
        "java",
        "-jar",
        jarFilePath,
        "-app", "AppName",
        "-i", folder,
        "-o", folder
    )
}

额外优化:用Gradle文件API提升路径可靠性

可以替换硬编码的字符串路径,使用Gradle内置的文件处理API,让路径跨平台兼容且更可靠:

tasks.register("myGradleTask", Exec::class) {
    val folder = rootProject.rootDir.resolve("myFolder")
    val jarFilePath = rootProject.rootDir.resolve("Scripts/MyExternalJarFile.jar")
    
    executable("java")
    commandLine(
        "java",
        "-jar",
        jarFilePath.absolutePath,
        "-app", "AppName",
        "-i", folder.absolutePath,
        "-o", folder.absolutePath
    )
}

内容的提问来源于stack exchange,提问作者Sudhir Singh Khanger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:02:17