我正在使用以下脚本进行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更多
答案 0 :(得分:1)
解决问题,使用非系统Groovy脚本并指定要使用的Groovy版本。