由idea配置spring boot導致的奇葩問題牽扯出的一系列東西

今天,或者說這幾天,我從經典的web servlet開發轉到嘗試spring boot開發,但是一直無法解析spring-boot包等,直接添加相應jar包又有新的報錯,一個比一個難解決。

最後的解決:其實是idea或者jdk8的問題(2019-11-18,jdk8再2019年1月即停止免費更新)。直接重裝idea是沒用的,因爲我用eclipse也打不開。在我把jdk8換成jdk11,再重裝idea後,。如果不做這些,直接使用maven來build、使用maven的spring-boot插件來run,就是ok的(但是之後添加什麼依賴後還會出現各種問題,所以換配置環境吧)。據谷歌說是idea生成自己的.iml文件時衝突,但是這些衝突是很難解決的。

 

 

詳情如下。

 

0、初始條件——idea ultimate 學生激活版一個,身經百戰從不出錯的jdk8,沒有手動安裝maven。

1、idea打開spring boot initializr,建了一個項目,成功出來一個項目,在按下idea的build前沒有報錯。

2、按下idea的build,顯示@SpringBootApplication無法解析,spring-boot和spring-boot-autoconfigure包不存在等等問題。

 

查找百度和谷歌,中文和英文,博客、論壇和官方文檔,所有的解決方案不外乎:

1、刪掉maven倉庫,重新install,reimport等等,本質說maven下載的東西錯了。現在解決了所有問題後看來,這個情況出現其實很小。

2、打開idea的invalidate cache and restart等等,本質說idea有簡單的小錯誤。沒有用。

3、設置jdk,檢查項目project structure的dependency和library,看看缺的東西,加上。沒有用。

 

 

事情的轉機

在嘗試以上方法全部無效後,我手動安裝了maven,瞭解了maven是什麼東西,大概就是一個命令行程序,能夠很好的完成java項目開發的管理,最基本的就是管理項目的模塊和模塊們的依賴。

之後做了這幾件事:

1、仔細檢查idea的project structure和project setting,看看maven的倉庫內容是不是真的加入到了project structure的library和module的dependency裏面。是的,加了,確認,真的不是這裏的問題。但是idea中運行還是報錯,表示spring-boot等包不存在。即便是我在pom.xml手動加入相關庫,依舊沒有用。

2、maven的clean、install什麼的倒一直沒錯。於是,深入學習maven工具,發現maven本身(雖然是基於maven的各種插件)就可以compile、build整個項目,於是使用idea的maven插件來繞過idea的編譯環境直接使用maven構建項目。沒有報錯,使用maven的運行(plugins,spring-boot,spring-boot:run)——

——成功。打開localhost:8080也接受訪問(停止運行後,localhost8080爲“網頁無法運作”),不過顯示的主頁whitelabel error page,於是我覺得應該是離成功差一步了。

3、祭出google,搜索“localhost 8080 whitelabel error page”,而不是“spring boot whitelabel error page”,得到結果:沒有出錯,你沒有在主頁寫東西就只能看到這個。於是你照着網上的教程,在main函數的那個類里加點東西(),用maven運行項目,看到了你的主頁。

4、其實在idea的右邊的maven用命令行mvn -U idea:idea更新插件,就可以在idea中正常跑出項目,但是這個maven的idea插件(不是idea的maven插件)據官網描述已停止支持,且我發現重開idea後就失效。因此選擇繞過idea使用maven自行處理問題。

 

總結:

環境版本很重要,尤其是有長長的依賴樹的時候。

大部分問題都很簡單,但如果這些簡單問題常見的解決方法解決不了的,那就是可能直到重裝環境之前,再也解決不了了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章