1. 程式人生 > >經典錯誤“Error configuring application listener of class org.springframework.web.contex”的終極分析

經典錯誤“Error configuring application listener of class org.springframework.web.contex”的終極分析

        做過SSH框架開發的同學們,幾乎都會遇到一個經典的報錯:啟動tomcat,報錯“Error configuringapplication listener of class org.springframework.web.contex”,對於剛剛接觸SSH的同學來說,這個錯誤非常煩人,因為有時候不小心誤打誤撞把這個錯誤給處理了,但是不知道根本原因,有時候不小心再一次遇到,卻怎麼弄也弄不好,那麼今天我就來徹底地分析這個病因並解決它。

        出現這個錯誤的根本原因是因為tomcat伺服器安裝目錄下部署的工程裡\WEB-INF\lib目錄下缺少spring weblibrary庫,如果直接將相應的.jar元件複製到\WEB-INF\lib下是可以解決這個問題的。

        既然這麼簡單,但是為什麼很多人會覺得頭疼呢,因為我們在開發的過程中都會使用相關開發工具,很少手動直接複製相關的庫檔案到tomcat部署下的工程裡面,尤其是使用myeclipse和eclipse的同學,因為IDE提供了很方便的功能,部署時會自動會複製相關檔案到tomcat下。

        這裡以myeclipse為例,通常出現這個錯誤,是因為專案工程添加了spring框架,而在新增spring框架之前,已經部署過專案,添加了spring框架後,我們通常的做法是,在Servers視窗下右鍵執行tomcat伺服器,這時候相關的庫檔案並未被複制到伺服器的\WEB-INF\lib目錄下,這時後就會報此錯誤。

        當我們為此錯誤苦惱時,通常會有兩種情況誤打誤撞解決了此錯誤。

        第一種,心煩之下在Servers視窗移除這個專案的部署,再重新部署,驚喜的發現,此問題解決了,可以執行這個web工程了。

        第二種,在Package Explorer視窗中右鍵工程,在彈出的選單中選擇Run As,發現不報錯誤了。

        因為是不經意地解決這個錯誤,很多人忽視了細節,很多人會覺得在Servers視窗下右鍵執行tomcat伺服器與執行“Run As”這兩個動作的功能是一樣的,其實是不一樣的。在添加了SSH等框架後,右鍵執行tomcat伺服器並不會自動將相關的庫檔案複製到tomcat伺服器下,而使用“Run As”卻可以自動將相關的庫檔案複製到tomcat伺服器下。

        有很多人因為右鍵執行tomcat伺服器後,一直報錯,還將tomcat解除安裝重新安裝,或者在myeclipse裡將此工程移除,然後在匯入,固然是解決了這個問題,但是卻麻煩了很多。

        有人會問,為什麼我使用“Run As”後,還是會報此錯誤,嘿嘿,其實這個錯誤一定不是你當前的工程引起的,不信仔細檢視控制檯下的錯誤路徑,一定是tomcat下部署了好幾個工程,由其它的工程引起的錯誤。如果刪除tomcat安裝目下的其他工程,一定不會再報此錯誤。或者,不刪除其它工程,“Run As”後,在瀏覽器中輸入要訪問的頁面,結果也能夠正常訪問。