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

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

最近在學Mybatis,按照視頻的講解在項目的某個包裏創建配置文件,而後讀取配置文件,可是一直提示異常。
這裏寫圖片描述html

讀取配置文件的爲官方代碼:java

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目錄。所以代碼能夠經過路徑加載到配置文件。spring

而如今咱們使用的是IntelliJ IDEA,idea對這些配置的文件方式很明顯和eclipse是不一樣的。在idea中有一個 Content Roots的概念。須要爲每個folder配置相應的Content Roots。Content Roots包括resources、sources、tests等。
這裏寫圖片描述
如圖所示:sql

  • java文件夾被標註爲Sources,那麼下面的全部子文件夾均爲Sources,編譯後生成.class文件。
  • Resources文件夾被標註爲Resources,那麼在該文件夾下的配置文件在編譯時會自動複製到編譯文件夾中。

那麼對於idea來講,就有如下幾種解決方案。session

  1. 將配置文件放到Resources文件夾中,在代碼中添加配置文件的虛擬路徑。選中文件,右鍵-Copy Reference,就能夠獲取到文件的虛擬路徑。
  2. 把配置文件放在com.zjut.ssm.config包中,修改config文件夾的Content Roots爲Resources,那麼編譯後,代碼也能識別出來。

以上兩種解決方案適用於make project方式來編譯項目。mybatis

若是是maven項目。還能夠經過配置pom.xml來實現。mvc

<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

相關文章
相關標籤/搜索