解決IntelliJ IDEA無法讀取配置文件的問題


解決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來說,就有以下幾種解決方案。

  1. 將配置文件放到Resources文件夾中,在代碼中添加配置文件的虛擬路徑。選中文件,右鍵-Copy Reference,就可以獲取到文件的虛擬路徑。
  2. 把配置文件放在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的編譯命令編譯項目,並復制配置文件到編譯好的文件夾中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM