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

logback-core 1.4.1适配Spring Boot 2.6.6-2.7.4时触发ClassNotFoundException

问题分析与解决方案

核心结论

是的,ch.qos.logback.core.joran.action.AbstractEventEvaluatorAction的引用几乎肯定来自你的Logback配置文件或外部依赖的配置资源,和Spring Boot本身无关。

原因说明

Logback从1.3.x版本开始就移除了AbstractEventEvaluatorAction这个类——它原本是用于解析Logback配置中<eventEvaluator>标签的旧实现,新版已用更简洁的配置语法和新类替代。当你升级到1.4.1时,旧配置里的相关引用找不到对应类,就会抛出ClassNotFoundException。

可能的引用来源

  • 本地Logback配置文件:检查项目中的logback-spring.xml、logback.xml,看是否存在:
    • 直接引用ch.qos.logback.core.joran.action.AbstractEventEvaluatorAction全类名的配置
    • 使用了旧版的<eventEvaluator>标签且指定了该action
    • 自定义的Joran Action继承了这个抽象类
  • 外部依赖的配置:部分第三方Jar包可能自带了旧版Logback配置文件,被Spring Boot的日志自动加载机制读取,其中包含该类的引用
  • 配置继承/引入:如果你的Logback配置通过<include>标签引入了外部配置(比如公司通用日志配置、开源组件的默认配置),引入的文件中可能存在相关旧引用

解决步骤

  1. 修正本地配置:
    将旧的<eventEvaluator>配置替换为Logback 1.4.x的标准写法,比如:
    <!-- 旧写法(依赖AbstractEventEvaluatorAction) -->
    <eventEvaluator name="myEvaluator" class="ch.qos.logback.classic.evaluation.JaninoEventEvaluator">
      <action class="ch.qos.logback.core.joran.action.AbstractEventEvaluatorAction"/>
      <expression>...</expression>
    </eventEvaluator>
    
    <!-- 新写法(无需指定action) -->
    <evaluator name="myEvaluator" class="ch.qos.logback.classic.evaluation.JaninoEventEvaluator">
      <expression>...</expression>
    </evaluator>
    
  2. 排查依赖树:
    • Maven项目执行mvn dependency:tree,Gradle项目执行./gradlew dependencies,找出包含旧版Logback配置的第三方依赖,要么排除该依赖的配置文件,要么联系依赖方更新配置
  3. 检查引入的外部配置:
    如果用了<include>引入外部配置,确认引入的文件是否使用了旧版Logback语法,替换为新版兼容写法

原报错信息

at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.configureByResourceUrl(LogbackLoggingSystem.java:186)
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:165)
    at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66)
    ...
    Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.joran.action.AbstractEventEvaluatorAction
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:30:57