只要你是用java在開發(fā)產品,不管你現在用的是什么工具,做的哪一塊,android,j2ee...可能都會遇到這個異常。今天我也就這對異常的解決方法做一個總結。本文章主要講的是“我在運行一個java web項目報這個異常的解決方法”,其他同學在不同項目中的遇到這個異常也可以借鑒我這個總結。
1、從這個異常字面意思很容易得出異常原因“類找不到”。那我就針對這個原因總結以下幾點:
1)java中唯一表示一個類:是包名+類名,所以在引用這個類的地方檢查下"包名和類名"是否都正確。
2)如果引用的地方是對的,那這一步就應該檢查下,包含的這個類的jar包和項目是否引用進來了。
3)上面這兩步,如果出錯的話,在編譯時就會報錯,但是在有些環(huán)境下就不會的。比如在android的xml布局中有時就不會報錯的,而是運行時報錯。
4)上面1、2兩步沒有問題的話,可是在運行時就報錯。咋辦,確定在項目在打包時候已經把包含這個類的庫打包進來了。
上面就是我對這異常的總結,有需要的同學可以參考借鑒下。
2、到這一步,我來解決遇到一個實際問題。我的java web項目每次運行時候都報這個錯"org.apache.catalina.LifecycleException: Failed to start component",如下圖所示:
3、在這里我很簡單的看了下,就是類找不到嗎?以為很簡單就解決了,可結果為了這個問題,我大概花了2天時間才終于找到根結所在,好了,廢話不多說,進入主題"類找不到"我看了下,如果類找不到,應該在編譯時就報錯的,myeclipse在檢查項目時應該也會報錯,可是我卻發(fā)現沒有錯誤,如下圖所示:
4、我就奇怪了,然后又檢查下依賴,發(fā)現相應的類庫都導入進來了。如下圖所示:
5、結果我又想,難道是版本問題,結果把錯誤往百度一粘,搜了下發(fā)現確實有人說是版本或包沖突問題;結果我就檢查依賴關系,讓多數類庫依賴同一版本的類庫。
6、結果心想這次可就要解決了,可惜又不行了,一運行還是報重復的錯。看到這里的同學,如果是老鳥應該會猜到是運行時報錯了,那應該就是運行時找不到類庫。如果你是這么想那就對了一半,結果我就檢查tomcat這個項目下WEB-INF/lib目錄,一看果然是空的。
7、那我就想為什么這個目錄是空的,按理說在打包時候應該會把類庫放到這個目錄下面。所以我就檢查下了,這個pom里面的打包配置,果然發(fā)現打包的時候有如下配置導致沒有把jar庫打包到這個目錄下面,如下圖所示:
8、至于這個是什么意思,簡單理解就是打包的時候不包括項目下的jar庫,這樣就導致項目部署到tomcat上去的時候,一運行就報上面剛開始說的錯。
9、好了,到這我的講解就該結束了。本文可能專業(yè)技術含量比較高,不是一篇通用的技術文。但我的用意是希望其他同學遇到相同問題,不要再經歷我這兩天搜索再分析,搜索再分析...這樣的重復勞動。也許你遇到可能不是本文類似的情況,但是我希望本文的分析方法對你有所幫助。
相關推薦:
MyEclipse怎么實現包的層次放置?
MyEclipse怎么快速處理折疊和展開代碼?
Myeclipse怎么調試并查看查看變量值的變化?
新聞熱點
疑難解答
圖片精選