解決 IDEA 中src下xml等資源文件無法讀取的問題


該問題的實質是,idea對classpath的規定。

在eclipse中,把資源文件放在src文件夾下,是可以找到的;

但是在idea中,直接把資源文件放在src文件夾下,如果不進行設置,是不能被找到的。


下面說說幾種解決方法,網上說的都很混亂,我這里做一個總結:推薦方法4


1.將所有資源文件放在resources文件夾下

這樣做很方便,比較容易想到,但是層次性就很差了,比如mybatis的映射配置文件mapper.xml,本來需要放在特定的包里面,與dao層,service層等層次為同一個層級,如今只能放在resource文件夾下,不方便分層;


2.如果該項目是maven項目:

配置maven的pom文件配置,在pom文件中找到<build>節點,添加下列代碼:

  1. <build>  
  2.     <resources>  
  3.         <resource>  
  4.             <directory>src/main/java</directory>  
  5.             <includes>  
  6.                 <include>**/*.xml</include>  
  7.             </includes>  
  8.         </resource>  
  9.     </resources>  
  10. </build>  
我嘗試過將directory修改為具體的放置配置文件的包,即修改成 src/main/java/lj/ncepu/mapperXML,然后<include>標簽里面也做了很多修改和 嘗試,始終無法訪問到配置文件;

所以,直接使用上面這樣的配置就好;如果還是不能訪問,歡迎跟帖討論;如果你知道應該怎么樣修改,也請跟帖討論,謝謝~

參考:將IDEA maven項目中src源代碼下的xml等資源文件編譯進classes文件夾


3.將包含配置文件的包,mark directory as ... Resources:

直接右鍵點擊包 -> Mark Directory As ,你會發現只有一個exclude;怎么辦?

Project Structure -> Modules -> Sources -> 選擇包含配置文件的package -> Mark as -> 選擇第三個 Resources -> OK

參考:http://stackoverflow.com/questions/6104551/java-setting-classpath


4.將package添加到classpath里:

Project Struture -> Modules -> Dependencies -> "+" -> JARS or directories -> 選擇包 

-> 彈出Choose Categories of Selected Files -> 選擇Classes -> OK

參考:http://stackoverflow.com/questions/854264/how-to-add-directory-to-classpath-in-an-application-run-profile-in-intellij-idea


以上幾種方法是在IDEA開發環境中可以找到資源文件,但是具體打包發布是否會包含該資源文件還需具體測試。

我的測試結果是,4種方法均可以在發布時包含package中的xml文件。



2018-01-17更新


這個問題出現的場景是自己用Springboot整合Mybatis的時候報錯“Invalid bound statement (not found)”意思很明顯找不着“XXXMapper.xml”文件,本次整合過程中都是用的IDEA開發工具,最后排查到最后發現是自己將MyBatis的Mapper文件地址配置成了“mapperScanPackage: com.XXX.module.app.mapper”在src的包中,這個在Eclipse中是可以的,最后排查發現發布目錄的target-->classes目錄中沒有改xml文件,后來查詢到IDEA中發布過濾了XML文件造成的,用上面的第二種方法解決好了,我其實不願意將“XXXMapper.xml”文件放到resources目錄下,在此Mark下! 再次補充這個問題,按照上面方法二弄了以后就無法識別resources目錄下的配置文件了,這個時候的解決方案是在“build”再次包含一個“resources”標簽,具體設置代碼如下(親測可行):
```xml src/main/java **/*.xml src/main/resources **/*.xml ```


免責聲明!

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



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