升级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为例)
移除无用依赖
删除org.springframework.web.struts:spring-web-struts:3.1.0.RELEASE,该包仅支持Struts 1,与Struts 6无关联。添加适配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
相关产品推荐
相关产品推荐

