1. 程式人生 > >Struts2配置 ClassNotFoundException: rg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilt

Struts2配置 ClassNotFoundException: rg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilt

練習Struts2時,配置web.xml:

<filter>   
    <filter-name>struts2</filter-name>   
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>   
    </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.<init>(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+滑鼠左鍵 點選<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 

中間的類,看能不能找到該類,如果能請用下面的方法,如果不能,那就是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。  


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