You need to enable JavaScript to run this app. 如何修复Jenkins流水线抛出的java.lang.RuntimeException: Error creating extended parser class: null错误
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Jenkins流水线抛出的java.lang.RuntimeException: Error creating extended parser class: null错误

Jenkins流水线Parboiled解析异常排查修复方案

错误链路与根因拆解

原始报错栈:

java.lang.IllegalStateException
at org.objectweb.asm.tree.analysis.BasicInterpreter.<init>(BasicInterpreter.java:66)
at org.parboiled.transform.RuleMethodInterpreter.<init>(RuleMethodInterpreter.java:42)
at org.parboiled.transform.InstructionGraphCreator.process(InstructionGraphCreator.java:41)
at org.parboiled.transform.ParserTransformer.runMethodTransformers(ParserTransformer.java:62)
at org.parboiled.transform.ParserTransformer.extendParserClass(ParserTransformer.java:45)
at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:39)
at org.parboiled.Parboiled.createParser(Parboiled.java:54)
Caused: java.lang.RuntimeException: Error creating extended parser class: null
at org.parboiled.Parboiled.createParser(Parboiled.java:58)
at org.jenkinsci.plugins.tokenmacro.Parser.process(Parser.java:80)
at org.jenkinsci.plugins.tokenmacro.Parser.process(Parser.java:74)
at org.jenkinsci.plugins.tokenmacro.TokenMacro.expand(TokenMacro.java:199)
at org.jenkinsci.plugins.tokenmacro.TokenMacro.expandAll(TokenMacro.java:237)
at org.jenkinsci.plugins.tokenmacro.TokenMacro.expandAll(TokenMacro.java:207)
at org.jenkinsci.lib.configprovider.model.ConfigFileManager.provisionConfigFile(ConfigFileManager.java:98)
at org.jenkinsci.plugins.configfiles.buildwrapper.ManagedFileUtil.provisionConfigFiles(ManagedFileUtil.java:82)
at org.jenkinsci.plugins.configfiles.buildwrapper.ConfigFileBuildWrapper.setUp(ConfigFileBuildWrapper.java:61)
at org.jenkinsci.plugins.workflow.steps.CoreWrapperStep$Execution2.doStart(CoreWrapperStep.java:97)
at org.jenkinsci.plugins.workflow.steps.GeneralNonBlockingStepExecution.lambda$run$0(GeneralNonBlockingStepExecution.java:77)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Finished: FAILURE

根因说明:异常触发在流水线配置文件挂载(ConfigFileBuildWrapper)阶段,调用token-macro插件执行文本宏替换时,底层parboiled解析器在动态生成解析类的过程中初始化失败。核心触发因素为ASM字节码操作库版本不兼容:老旧版本parboiled依赖低版本ASM实现类转换逻辑,当运行环境中ASM类版本不匹配、或JDK版本过高导致类文件结构超出旧ASM的解析能力时,BasicInterpreter初始化阶段会直接抛出无详情的IllegalStateException,这也是报错没有附带明确错误描述的原因。

排查与修复步骤

  • 先锁定近期变更项
    针对此前正常运行、突然报错的场景,优先排查近1-2天的环境变更记录:包括Jenkins控制器JDK版本调整、插件自动/手动升级、工具链版本切换,快速缩小排查范围。
  • 升级关联插件到兼容版本
    按依赖顺序依次升级插件稳定适配版本,解决旧版parboiled的兼容问题:
    • 优先升级token-macro插件到122.v09cb_a_fe912fa及以上版本,该版本移除了对老旧parboiled库的依赖,替换为适配新ASM的解析实现,从根源消除类转换异常
    • 同步升级config-file-provider插件到943.v79d1ec3e7b_4c及以上版本,匹配token-macro的依赖链路
    • 升级workflow-step-api、structs等基础依赖插件到最新稳定版,保证插件类加载隔离机制正常生效,避免不同插件的类版本串用
  • 排查ASM类版本冲突
    登录Jenkins控制器服务器,遍历$JENKINS_HOME/plugins/*/lib/目录下的所有jar包,搜索是否存在多个不同大版本的asm-*.jar文件。如果存在版本混杂(比如同时存在asm-5.x和asm-9.x的jar包),可暂时停用引入不匹配ASM版本的老旧插件,确保类加载时优先匹配parboiled依赖的ASM版本;临时无法升级插件时,可在Jenkins启动参数中调整类加载优先级,指定parboiled自带的ASM包优先加载。
  • 修复后验证
    所有调整完成后重启Jenkins控制器,重新触发之前报错的流水线作业,确认配置文件挂载阶段的宏替换逻辑正常执行,无parboiled初始化异常即可。

内容的提问来源于stack exchange,提问作者sambit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 00:06:01