Spring無法找到某些類的問題
在使用Spring我們經常會遇到某些外部引用的類無法找到或無法加載的問題,特別是使用依賴注入時遇到此類問題特別頭痛,我在此列出幾個可能的情況,希望能幫到遇到此類問題的人
- 項目中沒有引入響應的jar包
解決辦法:根據報錯信息確定缺少哪些包,搜索下載對應包導入並添加爲依賴
- 導入了jar包但是運行時卻仍然找不到對應類(筆者在使用IDEA時遇到此問題,不知道在eclipse中是否會出現)
情況描述:IDEA在寫Spring項目時(沒有使用SpringBoot、Maven情況下),可能會出現導入了jar包並且將其加入了依賴但build項目之後,項目的發佈文件夾下(out/artifacts/[項目名]/lib)卻沒有對應jar包,筆者對此感到奇怪,這種情況有兩種解決辦法:
- 手動將jar包添加到out/artifacts/[項目名]/lib下
- 將jar包的依賴添加到Spring的依賴內部,此時項目build之後是會自動加入到發佈文件夾內,如下圖所示
- 對應的jar包與Spring版本不兼容
如果排除了前兩種情況,再有可能的原因應該是所引用的jar包與Spring版本不兼容,此時需要到到網上搜索你所使用的Spring版本與相應jar的兼容版本是什麼,重新下載添加正確的版本
一點心得:最初使用Spring寫項目的時候,由於對Spring瞭解的不夠深入,爲了能夠快速搭建環境、快速上手寫代碼,筆者選擇了使用SpringBoot,使用SpringBoot確實方便、簡單,比純手動搭建Spring環境遇到少很多的配置問題,但時候回過頭來嘗試使用純手動搭建Spring時發現無從下手,重新搜索相關配置並瞭解其中配置的具體表示什麼,發現對其中的內容有了更深的認識。我的觀點是,開發Spring可以選擇更快速便捷的SpringBoot,但也要對Spring的手動配置及其中一些原理(依賴注入、AOP等)有一定的認識,這樣在使用SpringBoot遇到棘手的問題時更有可能找出更根本的解決辦法。同樣的,學習其他東西時,對於基礎的東西要所認識,遇到問題才能更好地解決。