Struts2配置後ClassNotFoundException

Codeagles發表於2018-07-10

版權宣告:本文為 Codeagles 原創文章,可以隨意轉載,但必須在明確位置註明出處!!!


Struts2配置後出現了 ClassNotFoundException: rg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilt 問題解決如下:

練習Struts2時,配置web.xml:

<filter> <filter-name>struts2</filter-name> <font color=red> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </font> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 然後執行專案的時候有時就會出現如下資訊,去網上找了跟多都沒有用,朋友也遇到這個問題,很多機器遇到這個問題但是解決辦法都不一樣,在這裡做一下總結。 ###錯誤資訊如下: 嚴重: Exception starting filter struts2 java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:108) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4356) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) ...

在解決之前,請先**按住ctrl+滑鼠左鍵 ** 點選 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

中間的類(會出現下劃線),看能不能找到該類,如果能請用下面的方法,如果不能,那就是struts-core核心包出錯了,重新匯入這個包,再試。

解決辦法(當然請排除程式碼寫錯了或者單詞大小寫錯誤之類的人為原因)

如果是MyEclipse9,那麼不要偷懶,如果直接buildPath,然後Add Ex. .jar匯入本地jar包的話,可能會出問題。那麼解決方案,在WEB-INF目錄下的lib資料夾中,將包複製貼上進去即可。(可能原因:Tomcat可能識別專案本地的jar包。。不太懂。。但是好使了。) 匯入還不好使,清空tomcat中webapps資料夾中所有struts2的專案,一定要清空,可能出現專案衝突導致出現這個問題。 如果是M有Eclipse2014(個人是這個版本,但是好像10以後都差不多,沒試過),如果在lib中匯入不好使,那麼用自帶的struts開發包,操作:右鍵專案->MyEclipse->Project Facets->Install .. struts這個選項就行。 還有一種情況就是,新建專案,導包,可能好使。 最後以上都不好使,將Tomcat版,有人6.0不好使,降到5.0就可以了,不過我個人是8.0沒遇到過不相容還是莫名其妙的問題。

還有這種就是版本問題,我用的是2.3所以沒測試過,

因為從Struts2.1.3開始,將廢棄ActionContextCleanUp過濾器,而在StrutsPrepareAndExecuteFilter過濾器中包含相應的功能。在web.xml中做修改紅色字型部分。struts2中StrutsPrepareAndExecuteFilter 異常如果是2.1.3之前的版本用org.apache.struts2.dispatcher.FilterDispatcher,否則用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

** 以上這些方法,一大部分是親測,都好使,因為除錯過很多機器,上網找了很多,但是方法都不一樣,自己用了一些好使,就都寫出來了,如果以後還有新方法,我會回來追加,如果有其他解決辦法,也請留言,我會後續補充。**

相關文章