我正在实现一个共享库项目 (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)
您可以采取一些步骤来排查和解决此问题:
检查 Jenkins 控制台输出:
查看 Jenkins 控制台输出以获取有关错误的更多详细信息。它应该提供有关哪个类导致问题的信息。 验证班级名称:
确保在 Jenkins 作业配置或引用该类的任何位置正确指定类名。 检查构建配置:
如果您使用 Maven 或 Gradle 等构建工具,请确保构建配置正确。检查依赖项和类路径设置。 工作区目录:
验证 Jenkins 作业的工作区目录是否包含正确的项目文件和依赖项。 Jenkins 作业配置:
仔细检查您的 Jenkins 作业配置。确保构建步骤和构建后操作设置正确。 詹金斯从配置:
如果您在具有多个节点(从站)的分布式环境中使用 Jenkins,请确保运行作业的从站上有必要的依赖项和配置。 詹金斯插件:
检查您是否使用任何可能影响类路径或构建环境的 Jenkins 插件。如有必要,更新或重新配置插件。 检查 Jenkins 版本兼容性:
确保您使用的 Jenkins 版本与 Java 版本以及项目所需的任何其他工具或插件兼容。 重新启动詹金斯:
有时,重新启动 Jenkins 可以解决配置或类路径问题。重新启动 Jenkins 并再次运行作业。 控制台日志和堆栈跟踪:
检查 Jenkins 控制台日志中的完整堆栈跟踪。它可能提供有关 ClassNotFoundException 根本原因的更多详细信息。 查看最近的更改:
如果问题是在您的 Jenkins 工作或项目最近发生更改后开始出现的,请检查这些更改以找出潜在的原因。 查阅文档:
检查您在 Jenkins 工作中使用的任何工具或插件的文档。它可能包含特定的故障排除步骤或兼容性信息。