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

升级Struts至6.3.0.2后出现NoSuchMethodError,求适配依赖库

适配依赖库及配置调整方案

问题根源

你当前使用的Spring 3.2.18的tiles2系列配置类(TilesConfigurer/TilesView)是为Tiles 2设计的,但Struts 6.3.0.2依赖的是Tiles 3.x版本,两者API不兼容,导致ELAttributeEvaluator方法找不到的错误。同时org.springframework.web.struts:3.1.0.RELEASE是适配Struts 1的依赖,和Struts 6完全无关,需移除。

具体依赖调整(以Maven为例)

  1. 移除无用依赖
    删除org.springframework.web.struts:spring-web-struts:3.1.0.RELEASE,该包仅支持Struts 1,与Struts 6无关联。

  2. 添加适配Tiles 3的依赖
    引入与Struts 6.3.0.2匹配的Tiles 3.x依赖(Struts 6.3.0.2默认依赖Tiles 3.1.0,版本需对齐):

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>3.1.0</version>
    </dependency>
    

    保留原有的org.springframework:spring-webmvc:3.2.18.RELEASE,该版本已支持Tiles 3的适配类。

配置文件修改(servlet.xml)

将原Tiles 2的配置类替换为Spring提供的Tiles 3适配类:

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer" >
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles-defs.xml</value>
        </list>
    </property>
</bean>

验证说明

调整后,Spring的Tiles 3配置类会正确适配Tiles 3.x的API,避免方法找不到的错误。若后续仍存在依赖冲突,可通过Maven的dependency:tree命令排查版本冲突,确保所有Tiles相关依赖版本统一为3.1.0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:55:19