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

TomEE从8.0.13升级到9.0.0后Spring应用启动失败求助

问题原因及解决方案

核心原因

TomEE 9基于Jakarta EE 9规范,所有Java EE相关API的包名已从javax.*全面迁移到jakarta.*,你的Spring应用仍依赖旧的javax.servlet.jsp.tagext.TryCatchFinally类,而TomEE 9中已不存在该类,因此抛出NoClassDefFoundError。

解决步骤

1. 升级Spring框架版本

Spring 5.3及以上版本开始支持Jakarta EE规范,请将Spring核心、Web等相关依赖升级至5.3.x及以上稳定版(推荐5.3.20+或更高)。例如:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.24</version>
</dependency>

2. 替换所有javax相关API依赖为jakarta版本

将pom.xml中所有javax.*的Servlet/JSP/JSTL依赖,替换为对应的jakarta.*版本:

  • Servlet API:
    <!-- 旧依赖 -->
    <!-- <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency> -->
    
    <!-- 新依赖 -->
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>5.0.0</version>
        <scope>provided</scope>
    </dependency>
    
  • JSP API:
    <!-- 旧依赖 -->
    <!-- <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
        <scope>provided</scope>
    </dependency> -->
    
    <!-- 新依赖 -->
    <dependency>
        <groupId>jakarta.servlet.jsp</groupId>
        <artifactId>jakarta.servlet.jsp-api</artifactId>
        <version>3.0.0</version>
        <scope>provided</scope>
    </dependency>
    
  • JSTL依赖:
    <!-- 旧依赖 -->
    <!-- <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency> -->
    
    <!-- 新依赖 -->
    <dependency>
        <groupId>jakarta.servlet.jsp.jstl</groupId>
        <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jakarta.servlet.jsp.jstl</artifactId>
        <version>2.0.0</version>
    </dependency>
    

3. 检查其他第三方框架依赖

确保项目中使用的其他框架(如Spring Security、MyBatis等)版本支持Jakarta EE,避免存在依赖javax.*包的情况。

4. 重新构建部署

清理本地Maven缓存(执行mvn clean install -U),重新生成WAR包后部署到TomEE 9。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:17:22