2021-05-12 14:32:11
解決IntelliJ IDEA無法讀取組態檔的問題
最近在學Mybatis,按照視訊的講解在專案的某個包裡建立組態檔,然後讀取組態檔,但是一直提示異常。
讀取組態檔的為官方程式碼:
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
經過反復思考,視訊用的ide是eclipse,eclipse裡在包下的組態檔(.propoties 和.xml等)編譯之後會自動複製到編譯後的資料夾中,也就是classes目錄。因此程式碼可以通過路徑載入到組態檔。
而現在我們使用的是IntelliJ IDEA,idea對這些設定的檔案方式很明顯和eclipse是不同的。在idea中有一個 Content Roots的概念。需要為每一個folder設定相應的Content Roots。Content Roots包括resources、sources、tests等。
如圖所示:
- Java資料夾被標註為Sources,那麼下面的所有子資料夾均為Sources,編譯後生成.class檔案。
- Resources資料夾被標註為Resources,那麼在該資料夾下的組態檔在編譯時會自動複製到編譯資料夾中。
那麼對於idea來說,就有以下幾種解決方案。
- 將組態檔放到Resources資料夾中,在程式碼中新增組態檔的虛擬路徑。選中檔案,右鍵-Copy Reference,就可以獲取到檔案的虛擬路徑。
- 把組態檔放在com.zjut.ssm.config包中,修改config資料夾的Content Roots為Resources,那麼編譯後,程式碼也能識別出來。
以上兩種解決方案適用於make project方式來編譯專案。
如果是maven專案。還可以通過設定pom.xml來實現。
<build>
<finalName>springmvc-study</finalName>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
</build>
這樣不用對idea設定,也可以使用maven的編譯命令編譯專案,並複製組態檔到編譯好的資料夾中。
使用IntelliJ IDEA 13搭建Android整合式開發環境圖文教學 http://www.linuxidc.com/Linux/2015-09/123416.htm
IntelliJ IDEA 12 建立Web專案圖文詳細教學 http://www.linuxidc.com/Linux/2013-05/84213.htm
用IntelliJ IDEA開發Android程式圖文教學 http://www.linuxidc.com/Linux/2013-03/81471.htm
IntelliJ IDEA 12開發haXe NME應用設定指南 http://www.linuxidc.com/Linux/2013-01/77227.htm
IntelliJ IDEA執行Play Framework的test mode http://www.linuxidc.com/Linux/2013-07/87694.htm
Ubuntu 13.04 安裝IntelliJ IDEA 12 http://www.linuxidc.com/Linux/2013-11/93014.htm
IntelliJ IDEA 12建立Maven管理的Java Web專案(圖解) http://www.linuxidc.com/Linux/2014-04/99687p2.htm
IntelliJ IDEA 常用快捷鍵列表及技巧大全 http://www.linuxidc.com/Linux/2015-04/116398.htm
相關文章