IDEA13中配置struts錯誤:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter +找不到java程序包 解決辦法


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

         1、確保所有struts2所需要的包都導進去了(紅色標記的),如圖:

     

         2、將外部lib下的包都復制到WEB-INFO下:

當再次啟動tomcat的時候就可以了。IDEA會把src目錄下的所有非*.java文件復制到WEB-INF/classes目錄下,所以Tomcat說找不到所需要的類。

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

     

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

可是一運行就出現如題所示的錯誤,程序無法啟動,具體錯誤如下:

嚴重: 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)

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

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

最后我棄用了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后成功。

             

 


免責聲明!

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



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