首页 > 解决方案 > 库 Jenkins Step 无法动态加载方法

问题描述

我想在共享库的 src 文件夹中创建一个类的新实例。当然,我可以在顶部做一个简单def object = new myClass()import操作,但我想动态启动类(尝试使用Class.forName失败,我不会使用该解决方案)。

我正在尝试从文件vars夹下的 groovy 文件中执行此操作,而不是src. 所以我要做的是:def customized = library("mySharedLib").com.x.x.MyClass.new(this)

正如共享库的文档中指定的那样:步骤库

但我得到了错误:

java.lang.IllegalAccessException: com.x.x.MyClass was defined in file:///Path/to/master/workspace/jobs/project/builds/297/libs/mySharedLib/vars/generic.groovy which was not inside file:///Path/to/master/workspace/jobs/project/branches/PR-50/builds/297/libs/mySharedLib/src/

在 Jenkins Jira Here中,有同样的问题......有什么想法吗?我不明白发生了什么事!src我尝试在执行步骤库调用的文件夹下的类中创建一个方法,但它返回相同的错误。

标签: jenkinsshared-librariesjenkins-pipeline

解决方案


无需从 vars 文件夹中加载库(我假设它与 src 文件夹位于同一个存储库中)。只需使用普通导入导入类并像在普通 groovy 中一样使用它,例如

import org.pack.Myclass
def call() {
    def myClass = new MyClass()
}

推荐阅读