IDEA13中配置struts錯誤:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter +

問題一:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter解決辦法java

         一、確保全部struts2所須要的包都導進去了(紅色標記的),如圖:web

     

         二、將外部lib下的包都複製到WEB-INFO下:apache

當再次啓動tomcat的時候就能夠了。IDEA會把src目錄下的全部非*.java文件複製到WEB-INF/classes目錄下,因此Tomcat說找不到所須要的類。tomcat

相同問題也可參見以下:(具體見原文地址:http://blog.csdn.net/njnu_mjn/article/details/6684661)app

     

一開始,我是依照某本教材,配置了User Libraries(名爲struts-2.2.3, 可供多個項目屢次使用), 而後直接把struts-2.2.3引入過來(這個包不會真正的放在項目文件夾下): eclipse

但是一運行就出現如題所示的錯誤,程序沒法啓動,具體錯誤以下:工具

嚴重: Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:269)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4071)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)spa

在Google裏baidu了一下,得不到有效的解決方案。根據錯誤提示,意思是找不到類org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,但是我確實手動找到了這個類啊:.net

爲了確保類的名稱沒有拼寫錯誤,右擊上圖的StrutsPrepareAndExecuteFilter.class文件,選擇"Copy Qualified Name"(複製精確名稱), 粘貼到web.xml文件的相應位置,保存重運行,出現一樣的錯誤,證實類的名稱沒有拼寫錯誤。debug

最後我棄用了User Libraries, 手動將Struts2的相關jar複製到/webContent/WEB-INF/lib目錄下:

從新運行程序,成功!

也就是說,Tomcat默認從WEB-INF/目錄下加載資源,Eclipse在發佈程序的時候,並無把User Libraries的相關資源拷貝到WEB-INF/目錄下(Eclipse會把src目錄下的全部非*.java文件複製到WEB-INF/classes目錄下),因此Tomcat說找不到所須要的類。

其餘解決方案

本文的評論中:

1. whbaicxy同窗給出了其餘的解決方案:Eclipse下User Library的發佈. 請各位同窗嘗試一下, 期待各位把解決的結果寫在本文下面的評論中.

2. orangekent同窗的解決方案:

我也遇到此狀況,但解決辦法很是簡單。
緣由是爲何tomcat沒有把jar包拷貝到運行環境?由於咱們在配置tomcat的時候選擇了「調試模式」,即「debug」;需設置爲「生產模式」,即「run」,以後從新部署便可。
模式設置位置:myeclipse--preferences--servers--tomcatxx--launch選擇「run mode」。

 

注:

工具版本:

Tomcat: 6.0.32

Eclipse Java EE: 3.6.2

Struts2: 2.2.3

截圖工具:QQ

圖片編輯:mspaint

   問題2:找不到java程序包的問題;

            在IDEA中,使用快捷鍵「ctrl+shift+alt+s」,彈出「Project Structure」窗口,選擇「libraries」,點擊「+」號,選擇「java」,而後選擇tomcat的安裝目錄,在tomcat目錄的

       lib下選擇兩個jar包,以下圖:

啓動tomcat後成功。

相關文章
相關標籤/搜索