当前位置: 首页 > 知识库问答 >
问题:

从Jenkins系统Groovy脚本获取“调用(未知源)”

陈志
2023-03-14

我正在使用以下脚本执行Rest调用。我让它在另一个Jenkins装备上工作,现在正在改进脚本,使其在另一个装备上可重用,但我得到了一个异常抛出。我遇到问题的代码如下。看起来它在“new HTTPBuilder()”结构上爆炸了,但我不明白为什么:

public postTestRun(Map rp) {
   def writer = new StringWriter()
   def bldr = new groovy.xml.MarkupBuilder(new StringWriter())
   def http = new HTTPBuilder(restUrl)
   bldr.getMkp().xmlDeclaration(version: "1.0", encoding: "UTF-8", standalone: "yes")
   bldr.Entity(Type: "run") {

我得到的堆栈跟踪如下所示:

FATAL: groovy/lang/闭包java.lang.NoClassDefFoundError: groovy/lang/闭包在java.lang.Class.getDeclared方法0(本地方法)在java.lang.lass.privateGetDeclared方法(未知来源)在java.lang.Class.get声明方法(未知来源)在org.codehaus.groovy.reflection.CachedClass3美元1.run(CachedClass.java:84)在java.security.AccessController.do特权(本地方法)在org.codehaus.groovy.reflection.CachedClass$3.init值(CachedClass.java:81)在org.codehaus.groovy.reflection.CachedClass$3.init价值(CachedClass.java:79)在org.codehaus.groovy.util.LazyReference.get锁定(Lazy参考书. java: 46)在org. codehaus. groovy. util。java: 33)在org. codehaus. groovy.反射。在groovy. lang.在groovy. lang.在groovy. lang的MetaClassInp. fill方法索引(MetaClassInp. java: 286)。初始化(MetaClassInp. java: 2936)在org. codehaus. groovy.反射。ClassInfo. getMetaClassUnderLock(ClassInfo. java: 166)在org. codehaus. groovy.反射。在org. codehaus. groovy. runtime. metaclass上的ClassInfo. getMetaClass(ClassInfo. java: 182)。在org. codehaus. groovy. runtime上的MetaClass(MetaClassCORstryImp. java: 227)。InvokerHelper. getMetaClass(InvokerHelper. java: 751)在org. codehaus. groovy. runtime. casite。CallSiteArray. createCallConstructorSite(CallSiteArray. java: 71)at org. codehaus. groovy. runtime. call site.CallSiteArray. defaultCallConstructor(CallSiteArray. java: 54)在org. codehaus. groovy. runtime. calsite.调用构造函数(AbstractCallSite. java: 182)在org. codehaus. groovy. runtime.AbstractCallSite. call构造函数(AbstractCallSite. java: 190)在Utms. postTestRun(Utms. groovy: 21)在Utms$postTestRun. call(未知来源)在org. codehaus. groovy. runtime.defaultCall(CallSiteArray. java: 42)在org. codehaus. groovy. runtime.调用(AbstractCallSite. java: 108)在org. codehaus. groovy. runtime.AbstractCallSite. call(AbstractCallSite. java: 116)在JenkinsTestLogger. logTestResult(JenkinsTestLogger. groovy: 56)在JenkinsTestLogger如果$logTestResult. call(未知来源)在org. codehaus. groovy. runtime. call。defaultCall(CallSiteArray. java: 42)在org. codehaus. groovy. runtime.调用(AbstractCallSite. java: 108)在org. codehaus. groovy. runtime.调用(AbstractCallSite. java: 116)在Script1. run(Script1. groovy: 37)在groovy. lang。在groovyShell. lang评估(GroovyShell. java: 650)。在hudson. plugins. groovy上评估(GroovyShell. java: 636)。在hudson. tasks上执行(SystemGroovy. java: 98)。在hudson. Model上执行(BuildStepMonitor. java: 20)。AbstractBuild$AbstractBuildExect. show(AbstractBuild. java: 756)at hudson. Model.在hudson. Model上构建$BuildExcetion. build(Build. java: 198)。在hudson. Model上构建$BuildExect. doRun(Build. java: 159)。AbstractBuild$AbstractBuildEx. run(AbstractBuild. java: 529)at hudson. Model.运行。执行(Run. java: 1706)在hudson. Model。FreeStyleBuild. run(FreeStyleBuild. java: 43)at hudson. model.执行(ResourceController. java: 88)在hudson. Model。Executor. run(Executor. java: 232)引起的:java. lang.ClassNotFoundExcema: groovy. lang.在java. net关闭。URLClassLoader1美元. run(未知来源)在java. net。URLClassLoader1美元. run(未知来源)在java. security.在java. net的AccessController. doPrivileged(本机方法)。在java. lang的URLClassLoader. findClass(未知来源)。在java. lang的ClassLoader. loadClass(未知来源)。ClassLoader. loadClass(未知来源)...44 more

共有1个答案

巫马欣嘉
2023-03-14

问题已解决,使用非系统Groovy脚本并指定要使用的Groovy版本。

 类似资料:
  • 问题内容: 我正在尝试将内容从Jenkinsfile中分离出来,以制作一个时髦的脚本。但是它无法调用这些脚本:这是代码: file.groovy 看起来Jenkinsfile能够调用file1.groovy但总是给我一个错误: 问题答案: 如果要从外部文件中获取可用的方法,则需要执行以下操作 在您的中,返回对方法的引用 编辑 似乎不是必需的 要么 正如@Olia所提到的 应该管用 这是有关的参考。

  • 我正在尝试将Jenkinsfile中的内容分离到groovy脚本中进行制作。但它无法调用这些脚本:下面是代码: 文件groovy公司 看起来Jenkinsfile能够调用file1.groovy但总是给我一个错误:

  • 问题内容: 我是Jenkins中使用的Groovy脚本的新手。我的问题是,我们如何根据作业名称和内部版本号获取作业的时间戳? 示例 :我想获取“ MyDeployJob”(JobName)的时间戳,并获取BuildNumber-105的时间戳。 我尝试使用方法方法,但无法正常工作。另外,我发现环境变量具有时间戳,但是我无法弄清楚如何使用Groovy Script获取细节。请帮助。 提前致谢。 问题

  • 有人能解释jenkins中执行groovy脚本和执行系统groovy脚本之间的区别吗?以及如何使用执行系统groovy脚本将脚本调用到从属。

  • 问题内容: 谁能解释jenkins中的执行groovy脚本和执行系统groovy脚本之间的区别?以及如何使用执行系统常规脚本将脚本调用为从属脚本。 问题答案: 要在从机上执行groovy脚本,您应该使用groovy插件 引用 普通的“ Groovy脚本”在运行构建的从属服务器上的派生JVM中运行。它与运行“ groovy”命令并传入脚本基本相同。 问题的第一部分在同一页面中回答 系统常规脚本OTO

  • 我需要从Jenkins作业中获取脚本路径。 请查看下面的屏幕截图,以便更清楚地了解需求。 我已经登录谷歌,获取了一些Groovy控制台脚本,其中列出了每个作业的详细信息。 通过使用jenkins.model.Jenkins.getJobNames()方法,我能够得到Jenkins中的所有作业,但实际上需要的是获得Scriptpath值,在每个作业中提到。 哪个Jenkins类/方法可以提供这些细节