2017-02-23 89 views
1

在我的管道末端,我想發送一封郵件來查看我的構建是否成功。所以我用下面的Groovy腳本:使用emailext插件時java.lang.StackOverflowError

emailext (
to: '[email protected]', 
subject: 'Job: ' + env.JOB_NAME + '/' +'Build #' + env.BUILD_NUMBER + '/' + ' Summary', 
body:'Integrity Checkout: '+ '\t\t\t' + checkoutStatus +'\n\n' + 'Build1: '+ '\t\t\t' + Build1 + '\n' 
                 + 'Build2 :'+ '\t' + Build2 + '\n' 
                 + 'Build3 :'+ '\t' + Build3 + '\n' 
                 + 'Build4 :'+ '\t' + Build4 + '\n' 
                 + 'Build5 :'+ '\t' + Build5 + '\n' 
                 + 'Build6 :'+ '\t' + Build6 + '\n' 
                 + 'Build7 :'+ '\t' + Build7 + '\n' 
                 + 'Build8 :'+ '\t' + Build8 + '\n' 
                 + 'Build9 :'+ '\t' + Build9 + '\n' 
                 + 'Build10:'+ '\t' + Build10 + '\n' 
                 + 'Build11:'+ '\t' + Build11 + '\n' 
                 + 'Build12:'+ '\t' + Build12 + '\n' 
                 + 'Build13:'+ '\t' + Build13 + '\n' 
                 + 'Build14:'+ '\t' + Build14 + '\n' 
                 + 'Build15:'+ '\t' + Build15 + '\n' 
                 + 'Build16:'+ '\t' + Build16, 
attachLog: true, 
compressLog: true 
) 

基本上代碼的工作,但只有當我註釋掉最後一行(build16)。變量被正確分配。但是,如果我執行代碼,我得到一個java.lang.StackOverflowError。 (超過1000線)

短剪斷:

java.lang.StackOverflowError 
at java.lang.Exception.<init>(Unknown Source) 
at java.lang.ReflectiveOperationException.<init>(Unknown Source) 
at java.lang.reflect.InvocationTargetException.<init>(Unknown Source) 
at sun.reflect.GeneratedMethodAccessor4094.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) 
at com.cloudbees.groovy.cps.CpsTransformer$_visitBinaryExpression_closure26.doCall(CpsTransformer.groovy) 
at sun.reflect.GeneratedMethodAccessor4092.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) 
at com.cloudbees.groovy.cps.CpsTransformer.makeChildren(CpsTransformer.groovy:355) 
at sun.reflect.GeneratedMethodAccessor3945.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) 
at com.cloudbees.groovy.cps.CpsTransformer.makeNode(CpsTransformer.groovy:330) 
at sun.reflect.GeneratedMethodAccessor3944.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174) 
at com.cloudbees.groovy.cps.CpsTransformer.visitBinaryExpression(CpsTransformer.groovy:636) 
at org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:51) 
at org.codehaus.groovy.ast.expr.BinaryExpression$visit.call(Unknown Source) 
at com.cloudbees.groovy.cps.CpsTransformer.visit(CpsTransformer.groovy:290) 
at sun.reflect.GeneratedMethodAccessor3946.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) 
at com.cloudbees.groovy.cps.CpsTransformer$_visitBinaryExpression_closure26.doCall(CpsTransformer.groovy:630) 
at sun.reflect.GeneratedMethodAccessor4094.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) 
at com.cloudbees.groovy.cps.CpsTransformer$_visitBinaryExpression_closure26.doCall(CpsTransformer.groovy) 
at sun.reflect.GeneratedMethodAccessor4092.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) 
at com.cloudbees.groovy.cps.CpsTransformer.makeChildren(CpsTransformer.groovy:355) 
at sun.reflect.GeneratedMethodAccessor3945.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) 
at com.cloudbees.groovy.cps.CpsTransformer.makeNode(CpsTransformer.groovy:330) 
at sun.reflect.GeneratedMethodAccessor3944.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174) 
at com.cloudbees.groovy.cps.CpsTransformer.visitBinaryExpression(CpsTransformer.groovy:636) 
at org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:51) 
at org.codehaus.groovy.ast.expr.BinaryExpression$visit.call(Unknown Source) 
at com.cloudbees.groovy.cps.CpsTransformer.visit(CpsTransformer.groovy:290) 
at sun.reflect.GeneratedMethodAccessor3946.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 

回答

1

問題解決了。大量的'+'運算符導致溢出。現在我用usiung java.lang.StringBuilder.append來構建我的輸出字符串。