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

时间:2015-08-13 21:11:39

标签: groovy jenkins httpbuilder

我正在使用以下脚本进行Rest调用。我让它在另一个Jenkins装备上工作,我现在正在改进脚本,使其可以在另一个装备上重复使用,但我得到一个异常抛出。我遇到问题的代码如下。看起来它正在爆炸“新的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") {

我得到的堆栈跟踪如下:

  

致命:groovy / lang / Closure java.lang.NoClassDefFoundError:   java.lang.Class.getDeclaredMethods0中的groovy / lang / Closure(Native   方法)at java.lang.Class.privateGetDeclaredMethods(Unknown Source)     在java.lang.Class.getDeclaredMethods(未知来源)at   org.codehaus.groovy.reflection.CachedClass $ 3 $ 1.run(CachedClass.java:84)     在java.security.AccessController.doPrivileged(Native Method)at   org.codehaus.groovy.reflection.CachedClass $ 3.initValue(CachedClass.java:81)     在   org.codehaus.groovy.reflection.CachedClass $ 3.initValue(CachedClass.java:79)     在   org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)     在org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)     在   org.codehaus.groovy.reflection.CachedClass.getMethods(CachedClass.java:250)     at groovy.lang.MetaClassImpl.populateMethods(MetaClassImpl.java:307)     at groovy.lang.MetaClassImpl.fillMethodIndex(MetaClassImpl.java:286)     在groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:2936)at at   org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:166)     在   org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:182)     在   org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:227)     在   org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:751)     在   org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallConstructorSite(CallSiteArray.java:71)     在   org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:54)     在   org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)     在   org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)     at Utms.postTestRun(Utms.groovy:21)at Utms $ postTestRun.call(Unknown   来源)at   org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)     在   org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)     在   org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)     在JenkinsTestLogger.logTestResult(JenkinsTestLogger.groovy:56)at   JenkinsTestLoggerIf $ logTestResult.call(未知来源)at   org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)     在   org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)     在   org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)     在Script1.run(Script1.groovy:37)at   groovy.lang.GroovyShell.evaluate(GroovyShell.java:650)at   groovy.lang.GroovyShell.evaluate(GroovyShell.java:636)at   hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:98)at at   hudson.tasks.BuildStepMonitor $ 1.perform(BuildStepMonitor.java:20)at at   hudson.model.AbstractBuild $ AbstractBuildExecution.perform(AbstractBuild.java:756)     在hudson.model.Build $ BuildExecution.build(Build.java:198)at   hudson.model.Build $ BuildExecution.doRun(Build.java:159)at   hudson.model.AbstractBuild $ AbstractBuildExecution.run(AbstractBuild.java:529)     在hudson.model.Run.execute(Run.java:1706)at   hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)at at   hudson.model.ResourceController.execute(ResourceController.java:88)     在hudson.model.Executor.run(Executor.java:232)引起:   java.lang.ClassNotFoundException:groovy.lang.Closure at   java.net.URLClassLoader $ 1.run(未知来源)at   java.net.URLClassLoader $ 1.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.net.URLClassLoader.findClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)... 44更多

1 个答案:

答案 0 :(得分:1)

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