解決關於 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時,一定要注意這個文件的位置結構就不會有這個問題了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM