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

War包部署失败求助:已执行项目清理与Maven依赖更新

部署Spring响应式应用到WildFly时NoClassDefFoundError问题排查

问题场景

部署demo-0.0.1-SNAPSHOT.war到WildFly时启动失败,已执行mvn clean和mvn dependency:update操作,问题未解决。报错核心信息如下:

{"WFLYCTL0080: Failed services" => {
    "jboss.deployment.unit.\"demo-0.0.1-SNAPSHOT.war\".component.\"org.springframework.http.server.reactive.ServletServerHttpResponse$ResponseAsyncListener\".WeldInstantiator" => "Failed to start service
    Caused by: org.jboss.weld.resources.spi.ResourceLoadingException: Error while loading class org.springframework.http.server.reactive.ServletServerHttpResponse$ResponseAsyncListener
    Caused by: java.lang.NoClassDefFoundError: Failed to link org/springframework/http/server/reactive/ServletServerHttpResponse$ResponseBodyProcessor (Module \"deployment.demo-0.0.1-SNAPSHOT.war\" from Service Module Loader): Failed to link org/springframework/http/server/reactive/AbstractListenerWriteProcessor (Module \"deployment.demo-0.0.1-SNAPSHOT.war\" from Service Module Loader): org/reactivestreams/Processor",
    "jboss.deployment.unit.\"demo-0.0.1-SNAPSHOT.war\".component.\"org.springframework.http.server.reactive.ServletServerHttpRequest$RequestAsyncListener\".WeldInstantiator" => "Failed to start service
    Caused by: org.jboss.weld.resources.spi.ResourceLoadingException: Error while loading class org.springframework.http.server.reactive.ServletServerHttpRequest$RequestAsyncListener
    Caused by: java.lang.NoClassDefFoundError: Failed to link org/springframework/http/server/reactive/ServletServerHttpRequest$RequestBodyPublisher (Module \"deployment.demo-0.0.1-SNAPSHOT.war\" from Service Module Loader): Failed to link org/springframework/http/server/reactive/AbstractListenerReadPublisher (Module \"deployment.demo-0.0.1-SNAPSHOT.war\" from Service Module Loader): org/reactivestreams/Publisher",
    "jboss.deployment.unit.\"demo-0.0.1-SNAPSHOT.war\".component.\"org.springframework.http.server.reactive.ServletHttpHandlerAdapter$HttpHandlerAsyncListener\".WeldInstantiator" => "Failed to start service
    Caused by: org.jboss.weld.resources.spi.ResourceLoadingException: Error while loading class org.springframework.http.server.reactive.ServletHttpHandlerAdapter$HttpHandlerAsyncListener
    Caused by: java.lang.NoClassDefFoundError: Failed to link org/springframework/http/server/reactive/ServletHttpHandlerAdapter$HandlerResultSubscriber (Module \"deployment.demo-0.0.1-SNAPSHOT.war\" from Service Module Loader): org/reactivestreams/Subscriber"
}}

问题原因

报错显示无法找到org.reactivestreams包下的Processor、Publisher、Subscriber类,说明应用依赖的Reactive Streams API未被正确加载:

  • 要么WAR包中未包含该依赖
  • 要么WildFly容器提供的版本与应用不兼容,或未正确声明模块依赖

解决方案

1. 确保Maven依赖中包含Reactive Streams API

如果是Spring Boot WebFlux项目,spring-boot-starter-webflux会自动引入该依赖;若是普通Spring项目,需手动添加:

<dependency>
    <groupId>org.reactivestreams</groupId>
    <artifactId>reactive-streams</artifactId>
    <version>1.0.4</version> <!-- 选择与Spring版本兼容的稳定版本 -->
    <scope>compile</scope>
</dependency>

同时检查pom.xml中是否存在排除该依赖的<exclusions>配置,若有则移除。

2. 验证WAR包中包含该依赖

执行mvn package后,解压生成的WAR包,查看WEB-INF/lib目录下是否存在reactive-streams-*.jar。若缺失,检查Maven依赖传递是否被阻断。

3. 配置WildFly模块依赖(可选)

若希望使用WildFly内置的Reactive Streams模块,需在项目根目录创建src/main/webapp/WEB-INF/jboss-deployment-structure.xml,添加如下配置:

<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.reactivestreams" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>

注意:优先选择让应用自带依赖(方案1),避免容器版本与应用依赖冲突。

4. 检查Spring版本兼容性

确保Spring版本与Reactive Streams版本匹配:

  • Spring 5.x 对应 Reactive Streams 1.0.x
  • Spring 6.x 兼容 Reactive Streams 1.0.x 及以上稳定版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:22:48