在寫一個struts2+hibernate整合的小例子時,啟動Tomcat伺服器,報了一個: 嚴重: Exception starting filter struts2java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng
在寫一個struts2+hibernate整合的小例子時,啟動Tomcat伺服器,報了一個:
嚴重: Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
折騰了半天,終於知道了原因,在搭建struts2的環境時,一般的做法是把jar包拖到WEB-INF下的lib文件中,Tomcat啟動時,會到這個目錄下載入jar文件,但如果你使用的是User Libraries,那麼就在lib下就沒有相應的jar文件了,雖然程式編譯是沒有問題的,但很有可能Tomcat啟動時會報這個錯,
原因很簡單:eclipse發佈項目的時候並未自動將引用的jar包copy到WEB-INF/目錄下,導致編譯器找不到所使用的class.
百度了半天,找到了三種解決方案,一一試過了,只有兩種成功解決了問題
第一種方法(成功):
很簡單,拋棄使用User Librariy,將所有jar文件放到lib文件目錄下,問題解決.但這並不是我想要的.
第二種方法(失敗):
配置Tomcat的時候,預設選擇的是"debug"模式,即調試模式,需要設置成"run"也就是運行模式。
步驟為:Windows->preferences->My eclispe->servers->找到你使用的Tomcat->Lauch.
第三種方法(成功):
手動將User library中的jar包添加到項目發佈時自動載入的目錄下:
選中項目,右鍵選擇Properties->Myeclispe->Deployment Assembly->new:
選中你之前建好的User library,點擊finish:
重新部署項目,啟動Tomcat,問題解決!~~~~~