从共享库jenkins调用函数

问题描述 投票:0回答:1

我正在实现一个共享库项目 (a),并且我想从另一个共享库项目调用函数 (b)。

首先我想测试一下是否可以这样做。这就是为什么我在“b”中添加了这个简单的脚本:

#test.groovy 
def call() {
echo("Hello World!!)
}

我尝试在项目中调用测试脚本。 我添加回声线只是为了测试目的,在控制台中我看到了它的输出。

#foo.script
def fooMethod() {
 def lib = library('b') # name of library
 echo(library('b').toString())
 lib.test() 
}

我正在使用另一个项目的 jenkinsfile 中的“a”共享库

library('a')
....
steps {
     script {
       foo.fooMethod()
}
}

我收到此错误:


java.lang.ClassNotFoundException: foo.null
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:702)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:812)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:800)
    at org.jenkinsci.plugins.workflow.libs.LibraryStep$LoadedClasses.loadClass(LibraryStep.java:348)
    at org.jenkinsci.plugins.workflow.libs.LibraryStep$LoadedClasses.invokeMethod(LibraryStep.java:303)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:47)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:20)
    at org.jenkinsci.plugins.workflow.cps.LoggingInvoker.methodCall(LoggingInvoker.java:105)
    at foo.fooMethod(foo.groovy:4)
java jenkins groovy
1个回答
-2
投票

您可以采取一些步骤来排查和解决此问题:

检查 Jenkins 控制台输出:

查看 Jenkins 控制台输出以获取有关错误的更多详细信息。它应该提供有关哪个类导致问题的信息。 验证班级名称:

确保在 Jenkins 作业配置或引用该类的任何位置正确指定类名。 检查构建配置:

如果您使用 Maven 或 Gradle 等构建工具,请确保构建配置正确。检查依赖项和类路径设置。 工作区目录:

验证 Jenkins 作业的工作区目录是否包含正确的项目文件和依赖项。 Jenkins 作业配置:

仔细检查您的 Jenkins 作业配置。确保构建步骤和构建后操作设置正确。 詹金斯从配置:

如果您在具有多个节点(从站)的分布式环境中使用 Jenkins,请确保运行作业的从站上有必要的依赖项和配置。 詹金斯插件:

检查您是否使用任何可能影响类路径或构建环境的 Jenkins 插件。如有必要,更新或重新配置插件。 检查 Jenkins 版本兼容性:

确保您使用的 Jenkins 版本与 Java 版本以及项目所需的任何其他工具或插件兼容。 重新启动詹金斯:

有时,重新启动 Jenkins 可以解决配置或类路径问题。重新启动 Jenkins 并再次运行作业。 控制台日志和堆栈跟踪:

检查 Jenkins 控制台日志中的完整堆栈跟踪。它可能提供有关 ClassNotFoundException 根本原因的更多详细信息。 查看最近的更改:

如果问题是在您的 Jenkins 工作或项目最近发生更改后开始出现的,请检查这些更改以找出潜在的原因。 查阅文档:

检查您在 Jenkins 工作中使用的任何工具或插件的文档。它可能包含特定的故障排除步骤或兼容性信息。

© www.soinside.com 2019 - 2024. All rights reserved.