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

Spring Boot 2.7升级Thymeleaf到3.2遇类缺失异常,需升级Spring Boot 3?

问题分析与解决方案

异常根源

你碰到的java.lang.NoClassDefFoundError: org/thymeleaf/web/IWebExchange,核心原因是Thymeleaf 3.1及以上版本新增了一套Web抽象层(org.thymeleaf.web包),但你只添加了thymeleaf-spring5这一个依赖,漏掉了核心的Web抽象模块。同时Spring Boot 2.7的默认依赖管理里没有这个新包的版本定义,直接导致JVM找不到对应的类。

另外提一句:你原本想升级到Thymeleaf 3.2,但实际配置的是3.1.2版本,不过不管是3.1还是3.2,都依赖这个新的Web抽象模块,问题本质一致。

是否必须升级Spring Boot到3.x?

完全不需要。Thymeleaf 3.1.x和3.2.x都兼容Spring 5.x(Spring Boot 2.7基于Spring 5.3),没必要升级到Spring Boot 3.x(后者基于Spring 6)。

解决办法

办法1:补全Thymeleaf完整依赖

在pom.xml里把Thymeleaf的核心、Web抽象、Spring5适配三个依赖都加上:

<!-- Thymeleaf核心模块 -->
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>
<!-- Thymeleaf Web抽象层(3.1+版本必须添加) -->
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-web</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>
<!-- Thymeleaf Spring5适配模块 -->
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

办法2:用Spring Boot依赖管理统一版本(推荐)

Spring Boot的依赖管理已经为不同Boot版本适配了对应版本的Thymeleaf,更省心的方式是在properties里指定Thymeleaf版本,让Boot自动帮你管理所有相关依赖,避免手动加漏:

<properties>
    <!-- 指定要升级的Thymeleaf版本 -->
    <thymeleaf.version>3.1.2.RELEASE</thymeleaf.version>
    <!-- Spring5适配模块版本与核心版本保持一致 -->
    <thymeleaf-spring5.version>3.1.2.RELEASE</thymeleaf.version>
</properties>

<!-- 仅保留Boot的Thymeleaf starter,无需手动指定版本 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

额外注意点

你的测试代码里手动创建了ThymeleafViewResolver和SpringTemplateEngine,要确保这些类的版本和你引入的Thymeleaf依赖完全匹配,避免类加载冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:43:21