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

Java8环境下WildFly11部署Spring4+Tiles3.0.7 EAR包遇解析异常

解决WildFly 11部署Spring4+Tiles3.0.7 EAR包时的UnsupportedOperationException异常

先还原下你的问题场景:你在WildFly 11上部署一个基于Java 8、包含Spring 4和Tiles 3.0.7的EAR包时,遇到了这个异常:

java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null"

你提供的服务器启动关键日志如下:

00:45:18,865 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: HTTP管理接口监听于http://127.0.0.1:9990/management
00:45:18,865 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: 管理控制台监听于http://127.0.0.1:9990
00:45:18,865 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 11.0.0.Final(WildFly Core 3.0.8.Final)已启动,耗时15761毫秒...

这个异常本质是Tiles自带的JSP解析组件和WildFly内置的Jasper容器版本不兼容导致的——WildFly 11自带的是Tomcat Jasper 9.0.x,而Tiles 3.0.7依赖的旧版解析器和它冲突,才会抛出“不支持null版本规范”的错误。下面给你几个落地的解决步骤:

1. 排除Tiles依赖中的冲突包

首先在你的构建文件(Maven/Gradle)里,把Tiles自带的JSP相关依赖排除掉,因为WildFly已经提供了这些类,不需要应用自己打包进去。

如果用Maven,修改tiles-jsp的依赖配置:

<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-jsp</artifactId>
    <version>3.0.7</version>
    <exclusions>
        <!-- 排除冲突的JSP API -->
        <exclusion>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
        </exclusion>
        <!-- 排除Tiles自带的Tomcat Jasper -->
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2. 配置WildFly部署描述符(可选,排除依赖后仍有问题时用)

如果排除依赖后还是报错,可以在你的EAR包中添加jboss-deployment-structure.xml文件,放在META-INF目录下,强制WildFly使用容器提供的JSP模块,避免加载应用中的冲突类:

<jboss-deployment-structure>
    <deployment>
        <!-- 排除应用中可能存在的冲突模块 -->
        <exclusions>
            <module name="javax.servlet.jsp.api" />
        </exclusions>
        <!-- 显式依赖容器的JSP模块 -->
        <dependencies>
            <module name="javax.servlet.jsp.api" export="true" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>

3. 检查Spring的Tiles视图配置

确保Spring的Tiles视图解析器没有指定自定义的JSP解析器,让它默认使用容器提供的组件。比如你的Spring XML配置应该是这样的:

<!-- Tiles视图解析器 -->
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>
<!-- Tiles配置器 -->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles.xml</value>
        </list>
    </property>
</bean>

最后验证步骤

  1. 重新构建你的EAR包,确保所有冲突依赖都已排除
  2. 清理WildFly的缓存:删除standalone/data和standalone/tmp目录下的所有内容
  3. 重新启动WildFly并部署EAR包,观察日志是否还有异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:56:42