SpringBoot運行找不到application.properties配置文件
運行springBoot項目啟動報錯:java.lang.IllegalStateException: No such application config! Please add <dubbo:application name="..." /> to your spring config。字面意思就是沒找到dubbo.application.name這個屬性,百度了下很多帖子遇到這個問題,但是並沒有解決我的問題,在此記錄下。
遇到這個問題第一個可能性是配置文件出錯,比如yml文件冒號后面少了一個空格,或者屬性拼寫錯誤。
第二種可能性是 resources目錄沒有Mark as resources root,導致讀取不到對應目錄下的配置文件(idea)
我檢查完配置文件和目錄,仍然報這個錯,只有去代碼里找答案。在ConfigFileApplicationListener類中,可以看到 DEFAULT_SEARCH_LOCATIONS 默認加載位置有:"classpath:/,classpath:/config/,file:./,file:./config/",DEFAULT_NAMES 默認配置文件名:"application"
其實問題就出在了這里,但是沒有注意到這里,繼續去找源碼看帖子,有說依賴沖突的,有說facts沒配置好的,甚至有人回答Springboot版本的問題,很奔潰。
最后去target目錄下看編譯好的代碼,才發現並沒有application.properties文件,原來問題出在了這里,豁然開朗,問題轉化成了:為什么配置文件沒編譯出來。
仔細檢查目錄,發現公司的配置文件放在了resources/spring下面,把他挪到resources下面,編譯成功。運行成功。
這次查找問題給了我兩個啟發:
- 報了錯,一些東西不能覺得是理所應當的,比如說理所應當的覺得配置文件沒放錯位置,應該再仔細的排除問題。
- 學會使用Idea的target查看編譯后的代碼,之前沒用過,現在簡直是方便,idea真香