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

Jenkins管道脚本失败,出现“类生成过程中的一般错误:方法代码太大!”

尹冠宇
2023-03-14

运行大型Jenkins管道脚本时,可能会出现以下错误:

组织。科德豪斯。非常棒。控制MultipleComplationErrorsException:启动失败:类生成期间出现常规错误:方法代码太大!

Java语言lang.RuntimeException:方法代码太大!

这个错误的原因是什么,如何修复?

共有2个答案

锺离俊雄
2023-03-14

如果将声明性管道与共享库一起使用,则可能需要在新方法中重构和外部化全局变量。下面是一个完整的示例:

Jenkins文件:

@Library("my-shared-library") _
myPipeline()

myPipeline.groovy:

def call() {
    String SOME_GLOBAL_VARIABLE
    String SOME_GLOBAL_FILENAME
    pipeline {
        stages() {
            stage('stage 1') {
                steps {
                    script {
                        SOME_GLOBAL_VARIABLE = 'hello'
                        SOME_GLOBAL_FILENAME = 'hello.txt'
                        ...
                    }
                }
            }
            stage('stage 2') {
                steps {
                    script {
                        doSomething(fileContent: SOME_GLOBAL_VARIABLE, filename: SOME_GLOBAL_FILENAME)
                        sh "cat $SOME_GLOBAL_FILENAME"
                    }
                }
            }
        }
    }
}
def doSomething(Map params) {
    String fileContent = params.fileContent
    String filename = params.filename
    sh "echo $fileContent > $filename"
}
柯宜年
2023-03-14

这是由于Java和Groovy之间的限制,要求方法字节码不大于64kb。这不是由于詹金斯管道DSL。

要解决这个问题,不要使用单一的单片管道脚本,而是将其分解为方法并调用这些方法。

例如,而不是:

stage foo
parallel([
 ... giant list of maps ...
])

相反,请执行以下操作:

stage foo
def build_foo() {
  parallel([
     ...giant list of maps...
  ])}
build_foo()
 类似资料:
  • 当我在jenkins中运行多分支管道代码时,我收到以下的以下错误: java.lang.NoSuchMethodError:在步骤中找不到这样的DSL方法“管道”[archive,bat,build,catchError,checkout,deleteDir,dir,echo,emailext,EmailExtrecients,error,fileExists,getContext,git,inp

  • 我试图运行ionic build Android--release命令来构建apk,但是我得到了这个错误 构建失败 总时间:2.623秒错误:cmd:命令失败,退出代码为1错误输出:失败:生成失败,出现异常。 错误:配置root项目'Android'时出现问题。您尚未接受以下SDK组件的许可协议:[Android SDK Platform25]。在构建项目之前,您需要接受许可协议,并使用Andro

  • 我需要重载jenkins函数来调试IDE中的管道脚本。 我是java/groovy等的新手。我将编写几百行脚本化管道。Groovy是基于java的。由于我是新手,我更喜欢函数名完成/建议和调试功能,在这里我可以一步一步地浏览这些行并查看vars中的内容。 我用groovy插件设置了一个EclipseLuna。这实际上是有效的=)!(对于最新的eclipse,插件还没有准备好)。调试也很酷! 但是特

  • 问题内容: 我想使用Jenkins 2.x Groovy Script Build Pipeline开始Sonar项目分析。 我在Maven中配置了声纳,所以没什么大不了的: 但是我如何从声纳获得结果呢?甚至更好的是,我如何确定是否达到了质量要求,以便停止构建管道。 据我所知,自从某些声纳版本以来,构建破坏者的概念就已过时。或您将如何处理。 我仍然认为,如果项目的基础代码太糟糕,则停止/暂停构建管

  • 我正在使用最新的Android Studio Canary build和最新的Kotlin为Android创建一个非常彻底的转换器。我突然得到一个编译错误,即使认为Android工作室没有看到任何bug在代码,它是抱怨一个后端错误,所以我认为我的项目是好的,但Android工作室有一个bug??请帮忙确认一下,这已经是很多工作了.... 它是在抱怨我的类MassCalc,它有6500行长,因为有很

  • 失败:生成失败,出现异常。 出错原因:任务':app:ProcessDebugGoogleServices'执行失败。 这是我在连接到firebase并运行应用程序后得到的错误。