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

升级SpringBoot 3.2.0遇SpelEvaluationException:EL1005E类型找不到问题求助

解决SpringBoot 3.2.0升级后SpelEvaluationException: EL1005E问题

问题概述

升级SpringBoot至3.2.0版本后,出现SpelEvaluationException: EL1005E: Type cannot be found错误,该问题曾在旧版本中修复,此次升级后复现。

报错详情

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1005E: Type cannot be found 'co.lib.util.FaceUtils'
    at org.springframework.expression.spel.support.StandardTypeLocator.findType(StandardTypeLocator.java:128)
    at org.springframework.expression.spel.ExpressionState.findType(ExpressionState.java:181)
    at org.springframework.expression.spel.ast.TypeReference.getValueInternal(TypeReference.java:70)
    at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:61)
    at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)
    at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)
    at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:273)
    at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:167)

可疑代码片段

class FaceState {
  @Value("#{T(co.FaceUtils).parseDate('${git.commit.time:}')}")
  private CommitDateTime commitTime;
}

解决指引

  • 校验全类名一致性:报错提示找不到co.lib.util.FaceUtils,但代码中写的是co.FaceUtils,先确认FaceUtils的实际全限定名,修正SpEL表达式T()中的路径,保证与实际类的包路径完全匹配。
  • 确认类的可访问性:确保FaceUtils是public修饰的类,且处于Spring组件扫描的范围内;如果是内部类,必须是静态内部类才能被SpEL识别。
  • 适配SpringBoot 3.2的类加载变化:SpringBoot 3.2对类加载机制有调整,若项目使用JPMS模块化,需检查模块配置module-info.java,确保该类所在模块已正确导出,或者授予Spring相关模块访问权限。
  • 自定义SpEL类型定位策略:可以通过配置类自定义StandardTypeLocator,指定正确的类加载器,或者替换BeanExpressionResolver,确保SpEL能定位到目标类。示例代码如下:
    @Configuration
    public class SpelConfig {
        @Bean
        public StandardBeanExpressionResolver beanExpressionResolver() {
            StandardBeanExpressionResolver resolver = new StandardBeanExpressionResolver();
            StandardTypeLocator typeLocator = new StandardTypeLocator(FaceUtils.class.getClassLoader());
            resolver.setTypeLocator(typeLocator);
            return resolver;
        }
    }
    
  • 临时降级或等待官方修复:若确认是SpringBoot 3.2.0的回归bug,可暂时降级到3.1.x稳定版本,同时关注Spring官方的issue追踪,等待官方发布修复补丁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:40:15