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

升级Spring Boot 3.2.2遇ClassNotFoundException问题求助

解决方案

核心问题分析

Spring Boot 3.x 基于 Jakarta EE 9+,所有原 javax.* 包已迁移至 jakarta.* 命名空间。你的项目中存在依赖版本不兼容和JSTL标签库引用未更新的问题,导致类找不到错误。


1. 修正POM依赖

(1)替换Spring Session依赖

原 spring-session-data-redis:1.3.1.RELEASE 是基于javax的旧版本,完全不兼容Spring Boot 3.x,替换为适配版本:

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <!-- 无需手动指定版本,Spring Boot Parent会自动管理匹配3.2.2的版本 -->
</dependency>

(2)移除冲突的Servlet API依赖

手动引入的 jakarta.servlet-api:5.0.0 与Spring Boot 3.2.2内置的Jakarta Servlet 6.0冲突,直接删除该依赖:

<!-- 删除这段 -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>

(3)替换JSTL实现为Jakarta版本

原 taglibs-standard-impl:1.2.1 是javax版本的JSTL实现,替换为适配Jakarta的实现:

<!-- 删除旧的taglibs依赖 -->
<!-- <dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-impl</artifactId>
    <version>1.2.1</version>
</dependency> -->

<!-- 添加Jakarta版本的JSTL实现 -->
<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jakarta.servlet.jsp.jstl</artifactId>
</dependency>

2. 更新JSP中的Taglib引用

index.jsp 中使用的旧JSTL URI是基于javax的,替换为Jakarta版本的URI:

<!-- 替换前 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!-- 替换后 -->
<%@ taglib prefix="c" uri="http://jakarta.apache.org/taglibs/standard/core" %>

3. 清理与重新构建

  • 执行Maven命令清理并构建项目:
    mvn clean install
    
  • 在Eclipse中右键项目 → Maven → Update Project,勾选"Force Update of Snapshots/Releases"。
  • 清理Tomcat的工作目录(若使用内置Tomcat,重启项目即可;若用外部Tomcat,删除work目录后重新部署)。

额外注意

部分老旧依赖(如unirest-java:1.4.9、itextpdf:5.4.2)可能仍依赖javax.*包,后续建议逐步升级到支持Jakarta的版本,避免潜在冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:56:00