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

在Jira Data Center执行issueLinkManager.createIssueLink时遇空指针异常

解决Jira Data Center ScriptRunner创建问题关联时的空指针异常

问题分析

你遇到的空指针异常,即便参数看起来非空,大概率是因为参数对应的实体(问题、关联类型)不存在,或者调用时的隐含条件不满足(如权限、关联方向)。以下是针对性的解决方案:

修正后的代码(带校验与异常处理)

import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.link.IssueLinkTypeManager

def issueManager = ComponentAccessor.issueManager
def issueLinkManager = ComponentAccessor.issueLinkManager
def authenticationContext = ComponentAccessor.jiraAuthenticationContext
def issueLinkTypeManager = ComponentAccessor.getComponent(IssueLinkTypeManager)

// 定义关联所需参数
def sourceIssueId = 1521112L
def destinationIssueId = 1782819L
def issueLinkTypeId = 10070L
def sequence = 1L
def currentUser = authenticationContext.getLoggedInUser()

// 1. 校验当前用户是否有效
if (!currentUser) {
    log.error("无有效登录用户,无法执行关联操作")
    return
}

// 2. 校验源问题与目标问题是否存在
def sourceIssue = issueManager.getIssueObject(sourceIssueId)
def destinationIssue = issueManager.getIssueObject(destinationIssueId)
if (!sourceIssue) {
    log.error("源问题ID ${sourceIssueId} 不存在或无访问权限")
    return
}
if (!destinationIssue) {
    log.error("目标问题ID ${destinationIssueId} 不存在或无访问权限")
    return
}

// 3. 校验关联类型是否存在
def issueLinkType = issueLinkTypeManager.getIssueLinkType(issueLinkTypeId)
if (!issueLinkType) {
    log.error("问题关联类型ID ${issueLinkTypeId} 不存在")
    return
}

// 4. 尝试创建关联并捕获异常
try {
    issueLinkManager.createIssueLink(sourceIssueId, destinationIssueId, issueLinkTypeId, sequence, currentUser)
    log.info("问题关联创建成功:${sourceIssue.key} → ${destinationIssue.key}")
} catch (Exception e) {
    log.error("创建关联失败,详细信息:${e.message}", e)
}

关键排查点

  1. 实体有效性校验:

    • 确认1521112和1782819对应的问题确实存在,且当前登录用户有权限访问这两个问题
    • 确认10070是正确的问题关联类型ID(可在Jira管理后台的「问题关联类型」中查看ID)
  2. 关联方向正确性:

    • createIssueLink的参数顺序是源问题ID → 目标问题ID,需匹配关联类型的方向。例如:
      • 若关联类型是「主功能包含新功能」,则主功能ID作为sourceIssueId,新功能ID作为destinationIssueId
      • 若关联类型是「新功能属于主功能」,则顺序需调换
  3. 权限检查:

    • 当前登录用户需拥有「链接问题」权限,且对两个问题都有编辑权限
  4. 异常详情排查:

    • 修正后的代码会打印完整异常堆栈,可根据日志中的具体错误信息定位问题(比如权限不足、关联类型不支持该方向等)

内容的提问来源于stack exchange,提问作者منى

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:23:37