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

Spring Boot 3.0.4部署Wildfly 24.0失败,求助解决

问题分析与解决方案

核心原因

Spring Boot 3.x基于Jakarta EE 9规范,将Servlet API的包名从javax.servlet彻底迁移到了jakarta.servlet;而Wildfly 24.x仍依赖旧版的javax.servlet API。你的项目中DispatcherServlet实现的是新的jakarta.servlet.Servlet接口,但Wildfly 24期望的是javax.servlet.Servlet,因此出现类不匹配的错误。

可行解决方案

方案1:降级Spring Boot到2.x版本(兼容Wildfly 24)

Spring Boot 2.x系列(如2.7.x LTS版本)仍使用javax.servlet API,完全兼容Wildfly 24。具体操作:

  • 修改pom.xml中的Spring Boot父依赖版本:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.14</version> <!-- 选择2.x的LTS稳定版,支持Java 17 -->
    <relativePath/>
</parent>
  • 确保所有Spring Boot相关依赖继承父版本,无需手动指定版本。
  • 打包WAR时,将内置Tomcat依赖标记为provided(避免与Wildfly容器冲突):
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
  • 主类需继承SpringBootServletInitializer,确保WAR包能被Wildfly正确加载:
@SpringBootApplication
public class YourApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(YourApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

方案2:升级Wildfly到26+版本(兼容Spring Boot 3)

Wildfly从26.x版本开始支持Jakarta EE 9规范,与Spring Boot 3.x完全兼容。直接升级Wildfly到26.1.3.Final或更高稳定版本即可,无需修改项目代码。

为什么之前的操作无效

你检查依赖树和修改web.xml的操作无法解决核心问题——Servlet API的包名已从javax变更为jakarta,Wildfly 24无法识别新包名下的接口实现,因此报错无法通过调整依赖或配置文件解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:12:13