如何解决Struts2.5运行时抛出的ClassNotFoundException异常
Struts2.5项目启动报Filter类找不到异常排查解决指南
首先附上完整报错信息:
org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter [struts2]
java.lang.ClassNotFoundException: org.apache.struts.dispatcher.ng.filter.StrutsPrepareAndExcuteFilter
排查步骤
按优先级依次核对以下问题:
- 检查web.xml中Filter类的拼写错误
报错中出现的类名是StrutsPrepareAndExcuteFilter,正确拼写为StrutsPrepareAndExecuteFilter,注意Execute单词的拼写,报错里的Excute少了一个字母e,优先修正拼写错误。 - 核对Struts2.5版本对应的Filter包路径
Struts2.5版本之后该Filter的包路径已调整,不再包含ng层级,且正确的包前缀为org.apache.struts2而非org.apache.struts,报错中的路径属于旧版本废弃路径。 - 检查项目依赖完整性
如果路径拼写全部正确仍报错,核对依赖配置:- 用Maven/Gradle管理依赖的项目,确认
struts2-core依赖版本为2.5.x系列,且依赖scope未设置为provided导致未打入部署包 - 手动导入jar包的项目,确认
WEB-INF/lib目录下存在对应版本的struts2-core.jar,且jar包未损坏
- 用Maven/Gradle管理依赖的项目,确认
- 检查IDE部署同步状态
确认IDE打包部署时,已将struts2相关依赖同步到部署目录的WEB-INF/lib下,避免缓存导致的依赖缺失问题。
最终修复方案
修正web.xml中Struts2过滤器的配置,正确配置示例如下:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
确认struts2-core依赖正确引入后重新部署即可解决该异常。
内容的提问来源于stack exchange,提问作者uma punna
相关产品推荐
相关产品推荐

