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

Jenkins脚本流水线获取Jar执行值遇空指针异常求助

问题解决步骤

1. 修正echo语句语法错误

你的echo命令写法不符合Groovy语法,会导致解析错误,这是引发空指针异常的直接原因之一。正确写法需使用Groovy字符串插值:

echo "Account Trans Value : ${acctval}"

2. 区分returnStatus和returnStdout的用途

你当前使用returnStatus: true,该参数会让sh步骤返回命令的退出状态码(整数,0表示执行成功,非0表示失败),而非Jar程序输出的业务返回值。如果你的Jar是通过标准输出返回业务数据,应改用returnStdout: true,同时建议去除输出末尾的换行符:

def acctval = sh script: "java -jar accountrans.jar . ", returnStdout: true
acctval = acctval.trim() // 清理输出中的多余换行和空格

如果确实需要获取命令的退出状态码,需确保后续逻辑是基于整数状态码的判断,而非业务返回值。

3. 额外可靠性检查

  • 确认Jenkins代理节点已安装Java环境,且java命令在系统PATH中,可添加前置验证:
    sh 'java -version'
    
  • 验证curl下载Jar文件是否成功,避免执行不存在的文件:
    sh 'if [ ! -f accountrans.jar ]; then echo "Jar文件下载失败" && exit 1; fi'
    

修正后的完整阶段代码

stage('Account Process')
{    
    sh 'curl --noproxy "*" -X GET https://paraforce.com/artifactory/account/accountrans.jar -o accountrans.jar'
    // 检查Jar文件是否下载成功
    sh 'if [ ! -f accountrans.jar ]; then echo "Jar download failed" && exit 1; fi'
    // 获取Jar程序的标准输出内容
    def acctval = sh script: "java -jar accountrans.jar . ", returnStdout: true
    acctval = acctval.trim()
    echo "Account Trans Value : ${acctval}"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:45:36