java.io.IOException: Could not find resources mybaits-config.xml


原文鏈接:這里
0.前言

調試IDEA+maven+mybatis時遇到的一個奇葩錯誤,

java.io.IOException: Could not find resources mybaits-config.xml

這個錯誤的意思是沒有讀取到mybatis配置文件。按照這個報錯去百度了一堆答案都沒有正常解決。最終在大神的提醒下發現了問題所在,記錄下來解決方法,以共參考。

出錯的代碼:

public void test() throws IOException{
//獲得核心配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//獲得session工廠對象
SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
SqlSession session =factory.openSession();
//獲得會話對象
List<Students> students =session.selectList("listAllStudents");
System.out.println(students); //正常輸出
session.close(); //關閉
}

文件位置:

在此之前已經嘗試過使用路徑直接鎖定mybatis-config.xml文件的位置發現不行。

1.解決辦法

按照百度給的一些答案,整理一下,主要報錯是意思是”沒有找到xml配置文件“

有個比較直觀的方法看是否可用,就是看target文件夾下classes有沒有生成配置文件,如果有標識能夠讀取,如果沒有表示不能讀取。下面任何一種方法如果不能在target中 生成我們的配置文件,基本可用判斷讀取文件失敗。

另外,每種辦法試過以后都建議使用 clean、build指令,甚至重啟IDEA(我最后改的就是重啟后才好用的)

注:已經嘗試過直接將mybatis-config.xml文件復制到classes文件夾下直接運行測試程序,這個發現是正常的(前提是你的數據庫配置都正確),說明還是配置的一些問題導致沒有正常生成mybatis-config.xml文件。

解決方法一:沒有正確設置資源文件夾導致沒有讀取成功。IDEA不會去讀取任意文件夾里面是配置文件,你必須告訴它配置文件在哪。本文的配置文件在src/main/resources里面的,這種情況是你沒有正確配置資源目錄導致不識別的,解決方法比較簡單。右擊resources文件夾,選擇”標記目錄“,選擇標記為”資源跟“(如果是資源根就不能標記)。然后執行clean、build(右上角的小錘子或ctrl+F9)。最后執行test測試看下是否正常。

注:次方法對我沒有作用

解決辦法二:修改pom文件。我們可用在pom文件中指定資源目錄,在pom文件中添加如下代碼:

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

然后重新clean、build,甚至是重新啟動IDEA,看是否正常。

注:此方法對我也沒有用。

解決方法三:在我百思不得其解的情況下,在大神的提示下,終於找到了問題所在。問題還是出在pom文件中。

在創建子模塊的時候引入了這個坐標,但是這個測試程序就一個模塊,測試文件也就一個,而且后來我把子模塊刪了,留了一個在這,外部如果這樣的話表示不會在外部生成東西。所以有兩個辦法,一個是改成

    <packaging>jar</packaging>

一個是直接刪除掉這一行。

果然,刪除掉這一行,重啟IDEA,clean,build后,然后就發現target下面的classes下面果然出現了mybatis-config.xml文件,測試也正常。


免責聲明!

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



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