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

WildFly30部署SpringBoot3.2.0 War包遇FieldInternal.type()空指针异常

问题:Spring Boot 3.2.0 WAR部署至WildFly 30时触发Jandex空指针异常

环境信息

  • WildFly 30
  • Java 21
  • Spring Boot 3.2.0

问题现象

生成WAR包后部署到WildFly 30时,部署流程失败,抛出空指针异常,核心报错为:无法调用org.jboss.jandex.FieldInternal.type(),因为field为null。

错误日志

15:14:42,252 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 1) WFLYCTL0013: 操作“deploy”执行失败 - 地址: ([("deployment" => "duengeportal-rest-api.war")]) - 失败描述: {"WFLYCTL0080: 服务启动失败" => {"jboss.deployment.unit.\"duengeportal-rest-api.war\".STRUCTURE" => "WFLYSRV0153: 处理部署\"duengeportal-rest-api.war\"的STRUCTURE阶段失败
    原因: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYSRV0156: 无法为注解索引部署根目录
    原因: java.lang.NullPointerException: 无法调用\"org.jboss.jandex.FieldInternal.type()\",因为\"field\"为null"}}
15:14:42,252 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 1) WFLYCTL0013: 操作“deploy”执行失败 - 地址: ([("deployment" => "duengeportal-rest-api.war")]) - 失败描述: {"WFLYCTL0080: 服务启动失败" => {"jboss.deployment.unit.\"duengeportal-rest-api.war\".STRUCTURE" => "WFLYSRV0153: 处理部署\"duengeportal-rest-api.war\"的STRUCTURE阶段失败
    原因: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYSRV0156: 无法为注解索引部署根目录
    原因: java.lang.NullPointerException: 无法调用\"org.jboss.jandex.FieldInternal.type()\",因为\"field\"为null"}}
15:14:42,254 ERROR [org.jboss.as.server] (management-handler-thread - 1) WFLYSRV0021: 部署\"duengeportal-rest-api.war\"已回滚,失败信息如下: 
{"WFLYCTL0080: 服务启动失败" => {"jboss.deployment.unit.\"duengeportal-rest-api.war\".STRUCTURE" => "WFLYSRV0153: 处理部署\"duengeportal-rest-api.war\"的STRUCTURE阶段失败
    原因: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYSRV0156: 无法为注解索引部署根目录
    原因: java.lang.NullPointerException: 无法调用\"org.jboss.jandex.FieldInternal.type()\",因为\"field\"为null"}}
15:14:42,258 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0028: 已停止部署duengeportal-rest-api.war(运行时名称: duengeportal-rest-api.war),耗时4ms
[2023-12-12 03:14:42,295] Artifact duengeportal-rest-api.war: 构件部署出错,详情请查看服务器日志。
[2023-12-12 03:14:42,296] Artifact duengeportal-rest-api.war: java.lang.Exception: {"WFLYCTL0080: 服务启动失败" => {"jboss.deployment.unit.\"duengeportal-rest-api.war\".STRUCTURE" => "WFLYSRV0153: 处理部署\"duengeportal-rest-api.war\"的STRUCTURE阶段失败
    原因: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYSRV0156: 无法为注解索引部署根目录
    原因: java.lang.NullPointerException: 无法调用\"org.jboss.jandex.FieldInternal.type()\",因为\"field\"为null"}}

解决方案

方案1:排除Spring Boot的Jandex依赖

Spring Boot 3.2.0自带的Jandex版本与WildFly 30内置版本存在兼容性冲突,在pom.xml中排除Spring Boot依赖树中的Jandex:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.jboss</groupId>
            <artifactId>jandex</artifactId>
        </exclusion>
    </exclusions>
</dependency>

若项目中存在其他starter依赖,需同步检查并排除其中的Jandex依赖。

方案2:升级WildFly版本至30.0.1.Final或更高

WildFly 30初始版本存在Jandex处理的bug,后续补丁版本已修复该问题,下载并升级到WildFly 30.0.1.Final或最新稳定版本后重新部署WAR包。

方案3:禁用WildFly的注解索引自动处理

在WAR包的WEB-INF/jboss-deployment-structure.xml中添加配置,跳过注解索引处理:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <properties>
            <property name="jboss.as.server.deployment.annotation.index.skip" value="true"/>
        </properties>
    </deployment>
</jboss-deployment-structure>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:19:53