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

Jenkins Pipeline下载JFrog制品时GenericDownloadExecutor.java:52空指针异常

问题根因

你遇到的NullPointerException是Jenkins Artifactory插件的经典触发场景,对应GenericDownloadExecutor.java第52行的空值是未初始化的BuildInfo实例:老版本插件要求调用下载/上传接口时必须显式传入BuildInfo对象,否则执行逻辑中访问该空对象就会抛出空指针。

解决方案

方案1:显式传入BuildInfo参数(兼容性最好,所有版本通用)

修改你的Pipeline脚本,在调用download接口前初始化BuildInfo并作为参数传入即可,修改后代码如下:

def artifactoryServer = Artifactory.server("Artifactory-instance-id")
artifactoryServer.connection.timeout = 300
// 新增:初始化BuildInfo实例
def buildInfo = Artifactory.newBuildInfo()
def artifactDownloadSpec = """{
    "files": [
        {
            "pattern": "aod-libs-release/path-to-artifact/deployment/${env.DP_VERSION}/deployment-${env.DP_VERSION}.zip",
            "target": "./artifacts"
        }, {
            "pattern": "aod-libs-release/path-to-artifact/dm-auth-web-services/${env.VERSION}/dm-auth-web-services-${env.VERSION}.war",
            "target": "./artifacts"
        }
    ]
}"""

echo "download spec " + artifactDownloadSpec
echo "artifactory server " + artifactoryServer
// 新增buildInfo参数
artifactoryServer.download spec: artifactDownloadSpec, buildInfo: buildInfo

方案2:升级Artifactory插件

如果你不想修改脚本,可将Jenkins的Artifactory插件升级到3.10.0及以上版本,该版本之后官方修复了无BuildInfo参数时的空指针问题,会自动初始化默认BuildInfo实例。

额外检查项

  • 确认Jenkins全局配置中Artifactory实例的ID确实为Artifactory-instance-id,且绑定的账号有对应制品仓库的下载权限
  • 确认env.DP_VERSION和env.VERSION两个变量已正确赋值,脚本输出的制品路径实际存在于Artifactory中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:06:05