在Hudson中执行post build groovy脚本时随机获取java.lang.NoClassDefFoundError错误

时间:2016-12-02 06:35:29

标签: java svn groovy hudson

我们正在使用Hudson来持续构建一些项目,这些项目使用groovy脚本(Execute Groovy系统脚本)作为后期构建操作在数据库中执行sql文件。脚本(使用枚举)在大多数情况下都能正常工作,但随机抛出跟随错误:

FATAL: java/lang$Enum
java.lang.NoClassDefFoundError: java/lang$Enum
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.getDeclaredMethods(Unknown Source)
    at org.codehaus.groovy.reflection.CachedClass$3$1.run(CachedClass.java:84)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:81)
    at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:79)
    at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
    at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
    at org.codehaus.groovy.reflection.CachedClass.getMethods(CachedClass.java:250)
    at groovy.lang.MetaClassImpl.populateMethods(MetaClassImpl.java:334)
    at groovy.lang.MetaClassImpl.fillMethodIndex(MetaClassImpl.java:284)
    at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:2904)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:166)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:182)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:227)
    at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:751)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:59)
    ...

...

一旦出现此错误,所有后续构建都会失败并出现相同的错误。我们通过定义JAVA_HOME环境变量(以某种方式被删除)修复了一次。它工作了几天才重新出现。这次,我们在Hudson配置中定义了JAVA_HOME,并且在几天之后问题重新出现时它暂时起作用。我们没有在hudson配置中设置Groovy路径,因为我们没有单独安装groovy。版本详情如下:

  • Hudson = 3.3.3
  • Hudson Subversion Plug-in = 2.3.11
  • Hudson Groovy builder = 1.13-h-3
  • Groovy Support Plugin = 3.0.3
  • Windows = 2012
  • JRE = 1.8.0_111

我们可以尝试哪些其他选项来解决问题?

PS:我们已经尝试过Jenkins,但是由于Jenkins中的Subversion插件中的一个问题/特性而退回到Hudson,当工作空间被锁定时,它会检查存储库,这是我们无法负担的。

0 个答案:

没有答案