該案例是一個非maven的普通java程序。
問題說明:
案例中將resources文件夾建在了src目錄之外,導致程序讀取不到db.properties文件
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("resources/db.properties");
報錯:訪問不到改路徑
如圖所示:
后來,將 resources文件夾挪到了src目錄下面,也報錯找不到路徑,注意觀察resources文件夾的顏色和樣子
如圖所示:
問題原因:
idea對這些配置的文件方式很明顯和eclipse是不同的。在idea中有一個 Content Roots的概念。需要為每一個folder配置相應的Content Roots。Content Roots包括resources、sources、tests等。
- java文件夾被標注為Sources,那么下面的所有子文件夾均為Sources,編譯后生成.class文件。
- Resources文件夾被標注為Resources,那么在該文件夾下的配置文件在編譯時會自動復制到編譯文件夾中。
那么對於idea來說,就有以下幾種解決方案。
- 將配置文件放到Resources文件夾中,在代碼中添加配置文件的虛擬路徑。選中文件,右鍵-Copy Reference,就可以獲取到文件的虛擬路徑。
- 修改存放配置文件的文件夾的Content Roots為Resources,那么編譯后,代碼也能識別出來。
以上兩種解決方案適用於make project方式來編譯項目。
如圖所示:
此時注意觀察resources文件夾的顏色和樣子發生了變化,這時候就可以讀取到db.properties文件了