Jira Scriptrunner Groovy传入接口实现类触发MissingMethodException问题
问题根因
你触发报错的核心原因并非参数类型不匹配,而是调用方法的方式错误:getRemoteIssueLinksForIssue是DefaultRemoteIssueLinkManager的实例方法,不是静态方法,你直接用类名以静态方式调用,自然找不到对应的方法签名,报错信息里的static com.atlassian.jira.issue.link.DefaultRemoteIssueLinkManager.getRemoteIssueLinksForIssue()已经明确标注了你当前调用的是静态方法路径。
你之前尝试的所有参数转型操作都无法解决问题,因为问题根源和参数类型无关,报错里的参数类型提示只是Groovy匹配失败后给出的参考信息,属于误导性提示。
正确解决方案
Jira的组件都由OSGi容器统一管理,不要直接调用实现类的静态方法,也不要手动实例化实现类,通过官方的组件获取工具调用即可:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.link.RemoteIssueLinkManager // 直接获取接口对应的组件实例,不需要引用实现类 def remoteIssueLinkManager = ComponentAccessor.getComponent(RemoteIssueLinkManager) def remoteLink = remoteIssueLinkManager.getRemoteIssueLinksForIssue(issue)
如果是Scriptrunner的内置脚本场景,也可以通过@PluginModule注解直接注入RemoteIssueLinkManager实例,不需要手动调用ComponentAccessor。
内容的提问来源于stack exchange,提问作者samthegolden
相关产品推荐
相关产品推荐

