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

升级Java1.7 Web应用至OpenJDK19+Tomcat10.1,如何选Spring版本?

首要升级操作步骤
  • 隔离测试环境:复制原有项目作为升级副本,避免破坏可用的旧版本。
  • 统一Maven Java版本配置:替代IDE手动设置,在pom.xml中明确指定编译与运行版本,确保构建一致性:
    <properties>
        <maven.compiler.source>19</maven.compiler.source>
        <maven.compiler.target>19</maven.compiler.target>
        <maven.compiler.release>19</maven.compiler.release>
    </properties>
    
  • 优先处理Jakarta API迁移:Tomcat 10.x使用Jakarta EE(原Java EE)API,包名从javax.*改为jakarta.*,这是核心变更,需优先适配或使用桥接包过渡。
推荐的pom.xml依赖版本

Spring框架

优先选择原生支持Jakarta EE 9+与Java 17+的Spring Framework 6.x,适配Tomcat 10.1:

<!-- Spring核心上下文 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>6.0.11</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.0.11</version>
</dependency>
<!-- Spring WebMVC(适配Jakarta Servlet) -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>6.0.11</version>
</dependency>

若暂时不想升级到Spring 6,可使用Spring 5.3.x最终版本,但需添加Tomcat Jakarta桥接包解决API冲突:

<!-- Spring 5.3.x适配Tomcat10.x的桥接包 -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jakartaee-migration</artifactId>
    <version>1.0.0</version>
    <scope>provided</scope>
</dependency>

Hibernate框架

选择支持Jakarta Persistence与Java 17+的Hibernate 6.x:

<dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>6.2.7.Final</version>
</dependency>
<!-- Jakarta Persistence API -->
<dependency>
    <groupId>jakarta.persistence</groupId>
    <artifactId>jakarta.persistence-api</artifactId>
    <version>3.1.0</version>
</dependency>

若坚持使用Hibernate 5.x,选用支持Jakarta的5.6.x最终版本:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.6.15.Final</version>
</dependency>

Servlet API

适配Tomcat 10.1的Jakarta Servlet 6.0:

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>6.0.0</version>
    <scope>provided</scope>
</dependency>
启动错误排查方向
  • 清理API冲突:检查依赖中是否同时存在javax.*与jakarta.*的Servlet/JPA相关包,必须移除旧的javax依赖。
  • 更新Spring配置命名空间:Spring 6.x要求XML配置使用HTTPS命名空间,例如将http://www.springframework.org/schema/mvc替换为https://www.springframework.org/schema/mvc,并匹配对应版本。
  • 适配数据库驱动与方言:升级Hibernate后,确认数据库驱动版本兼容(如MySQL需用8.0.x版本),并更新Hibernate方言(如MySQL 8对应org.hibernate.dialect.MySQL8Dialect)。
  • 检查Java语法兼容性:排查项目中Java 7及以下的过时语法(如旧资源关闭方式)或废弃API,OpenJDK 19对这类代码的检查更严格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:53:02