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

使用Docker将War包从Nexus部署到Wildfly时遇部署错误

问题描述

尝试通过Docker将Nexus中的.war文件部署到Wildfly时出现部署失败错误,错误日志如下:

10:13:56,319 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "file.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"file.war\".component.\"javax.servlet.http.HttpServlet$NoBodyAsyncContextListener\".WeldInstantiator" => "Failed to start service
    Caused by: org.jboss.weld.resources.spi.ResourceLoadingException: Error while loading class javax.servlet.http.HttpServlet$NoBodyAsyncContextListener
    Caused by: java.lang.IncompatibleClassChangeError: javax.servlet.http.HttpServlet and javax.servlet.http.HttpServlet$NoBodyAsyncContextListener disagree on InnerClasses attribute"}}

已尝试以下排查手段,但问题未解决:

  • 从pom.xml中移除javax.servlet依赖
  • 在org.springframework.boot依赖中排除ch.qos.logback相关依赖

当前环境版本信息:

pom.xml配置版本

  • Java 11
  • Vaadin 23.0.1
  • Wildfly Maven Plugin 4.0.0.Final

Docker运行环境

  • JDK 11
  • Wildfly 15.0.1.Final
  • MSSQL_JDBC_VERSION 12.4.2.jre11
解决方案

这个错误核心是Servlet API类版本冲突,Wildfly 15自带的Servlet API版本与war包中打包的Servlet相关类版本不一致,导致内部类属性不兼容。

具体修复步骤:

  1. 强制标记Servlet API依赖为provided
    即使手动移除了javax.servlet依赖,Vaadin或Spring Boot仍可能间接引入Servlet相关依赖。需在pom.xml中明确将所有Servlet API相关依赖设置为<scope>provided</scope>,避免打包进war包:
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version> <!-- 匹配Wildfly 15自带版本 -->
    <scope>provided</scope>
</dependency>

同时检查Vaadin相关依赖,若存在传递引入的Servlet依赖,同样设置为provided。

  1. 清理Spring Boot打包的容器依赖
    如果使用Spring Boot,默认war打包会包含Tomcat依赖,需排除并适配Wildfly容器:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  1. 核对版本兼容性
    Vaadin 23.0.1属于较新版本,而Wildfly 15基于Java EE 8,二者存在兼容性断层:
  • 可选升级Wildfly到26+版本(支持Jakarta EE 8/9,适配Vaadin 23)
  • 或降级Vaadin到14.x版本(兼容Java EE 8和Wildfly 15)
  1. 清理缓存确保产物纯净
    清理Nexus中旧的war包缓存,同时清空本地Maven仓库的残留依赖,重新构建打包,避免混入旧版本类文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:50:39