You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins多分支流水线UI修改配置抛出FolderIcon类未找到异常如何解决

问题背景

编辑补充:该问题仅在通过Jenkins UI修改任意配置时触发,直接修改配置XML文件可正常运行。

此前在「Branch Sources」中新增分支的功能运行符合预期,现在新增分支后点击保存就会抛出如下异常。该异常看起来与文件夹图标相关,和当前操作没有直接关联,不清楚该如何排查处理。

报错界面截图

Caught unhandled exception with ID 408ae4bf-39cd-4d36-b90b-66265c44bb65
java.lang.ClassNotFoundException: ["com.cloudbees.hudson.plugins.folder.icons.StockFolderIcon","jenkins.branch.MetadataActionFolderIcon"]
    at hudson.PluginManager$UberClassLoader.findClass(PluginManager.java:2173)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:681)
Caused: java.lang.IllegalArgumentException: Class ["com.cloudbees.hudson.plugins.folder.icons.StockFolderIcon","jenkins.branch.MetadataActionFolderIcon"] is specified in JSON, but no such class found in classLoader hudson.PluginManager$UberClassLoader
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:686)
Caused: java.lang.IllegalArgumentException: Failed to instantiate class com.cloudbees.hudson.plugins.folder.FolderIcon from {"stapler-class":["com.cloudbees.hudson.plugins.folder.icons.StockFolderIcon","jenkins.branch.MetadataActionFolderIcon"],"$class":["com.cloudbees.hudson.plugins.folder.icons.StockFolderIcon","jenkins.branch.MetadataActionFolderIcon"]}
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:693)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:490)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:486)
    at com.cloudbees.hudson.plugins.folder.AbstractFolder.doConfigSubmit(AbstractFolder.java:1360)
    at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.doConfigSubmit(ComputedFolder.java:414)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:393)
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:405)
    at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:77)
    at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:208)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:141)
    at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:536)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
Caused: javax.servlet.ServletException
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:816)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
    at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:281)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:240)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
解决方案
  • 首先排查插件兼容问题:该错误是CloudBees Folder插件和Branch API插件版本不匹配导致的,UI提交的配置JSON给FolderIcon字段传入了包含两个类名的数组,但当前加载的插件版本不支持该格式,大概率是近期只升级了其中一个插件,另一个没有同步升级导致的。先重启Jenkins实例确认是否是插件加载异常导致的类找不到。
  • 版本适配处理:如果重启后问题依旧,将两个插件同步升级到兼容版本:CloudBees Folder插件升级到6.1155.v2a_0864f39b_42及以上,Branch API插件同步升级到2.1093.v27d82974822b及以上;也可以将两个插件都回退到故障发生前的正常版本。
  • 临时规避方案:如果暂时不方便升级插件,可直接通过修改配置XML的方式完成配置变更;也可以在UI提交配置前打开浏览器开发者工具,找到提交参数中对应folderIcon的字段,删掉数组里多余的类名,仅保留一个符合当前插件版本的类名后再提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:57:03