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

升级SpringBoot3.0.0后WildFly22部署模块的警告问题求解

SpringBoot 3.0.0升级部署WildFly22时NoClassDefFoundError问题

警告:无法在Service Module Loader的模块“deployment. .war”中定义类org.springframework.web.servlet.tags.form.AbstractHtmlElementTag:java.lang.NoClassDefFoundError:无法链接org/springframework/web/servlet/tags/form/AbstractHtmlElementTag(来自Service Module Loader的模块“deployment. .war”):jakarta/servlet/jsp/tagext/DynamicAttributes

从SpringBoot 2.5.x升级到3.0.0后,使用WildFly22(Eclipse服务器)部署模块时,Eclipse控制台出现上述警告信息。

环境配置

eclipse 2021-09
java 17.0.5
wildfly 22
springboot-starter-parent-3.0.0
spring.framework.version-6.0.2
jakarta.servlet-api-6.0.0 
jakarta.servlet.jsp.jstl-api-3.0.0
jakarta.servlet.jsp-api-3.1.1

已尝试的解决方法

  • 检查spring-webmvc-6.0.2(AbstractHtmlElementTag来自该依赖包)与jakarta.servlet.jsp-api-3.1.1(DynamicAttributes.class来自该依赖包)之间的兼容性。
  • 检查是否存在依赖冲突。
  • 删除本地Maven仓库中的JAR文件并重新下载。

但问题仍未解决。

解决建议

1. 升级WildFly版本

SpringBoot 3.x和Spring Framework 6.x基于Jakarta EE 9/9.1规范,而WildFly22仅支持Jakarta EE 8。两者核心API包名已从javax.*切换到jakarta.*,WildFly22自带的Servlet/JSP组件还是javax版本,和你引入的jakarta.servlet-api-6.0.0完全不兼容,直接导致找不到jakarta.servlet.jsp.tagext.DynamicAttributes类。

建议直接升级到WildFly 27及以上版本,这类版本原生支持Jakarta EE 9/9.1,能和SpringBoot 3.x完美适配。

2. 临时调整依赖范围(仅作应急尝试)

如果暂时无法升级WildFly,可将Jakarta相关依赖设为provided范围,让WildFly提供的组件生效,但注意WildFly22的组件是javax版本,和SpringBoot3.x的jakarta要求不匹配,这个方法大概率无法彻底解决问题,仅作为临时测试:

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>6.0.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>jakarta.servlet.jsp</groupId>
    <artifactId>jakarta.servlet.jsp-api</artifactId>
    <version>3.1.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>jakarta.servlet.jsp.jstl</groupId>
    <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
    <version>3.0.0</version>
    <scope>provided</scope>
</dependency>

3. 排查并排除冲突依赖

执行Maven命令查看完整依赖树,定位是否存在javax/jakarta混合的冲突依赖:

mvn dependency:tree

找到相关冲突的依赖后,在pom.xml中通过<exclusions>标签排除。

内容的提问来源于stack exchange,提问作者RAJURI ACHITHU VARDHAN BABU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:03:28