解决关于 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 异常的原因

先来看一下,让人迷惑的异常截图,以便再次加深迷惑的感受。

感受之后,就要找原因了,这样迷惑下去不是办法。

1. 为什么会出现这个错误?

很明显,错误已经明确的提示到没有找到这类。也就是说,这个类不存在。

开什么玩笑?一直用的好好的怎么就突然不存在了?这不科学啊!

2. 这个类为什么不存在?

问题已经定向到了错误范围,那就从struts2 这个jar包开始吧,经过排查发现是有这个类的,如图:

那就奇怪了,以前用的都好好的,今天突然就没有了?不信邪,继续分析。。。。

排查pom文件 ,与之前正常项目对比了一下,发现一处不同,之前用的struts2是2.3版本的,而今天高兴将它换成了2.5的,如图:

也许问题就在这,翻越大量的关于官方版本变动的表述,最后确认到:

2.4 以后的struts2过滤类文件 StrutsPrepareAndExecuteFilter.class 的结构已经做了调整,没有ng 这个包了,

因此,配置文件中这句代码才会导致异常,因为系统启动时找不到它。

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

所以,将配置文件换成这段代码就可以了。

<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

 

最后总结:

因为struts2版本在2.4开始做了结构调整导致的,所以配置struts2时,一定要注意这个文件的位置结构就不会有这个问题了。

 

posted @ 2020-06-25 13:06  迦南邪恋  阅读(3684)  评论(0编辑  收藏  举报