[英]FileInputStream can not find file intelliJ idea
我正在編寫一個DBUnit測試。 從xml文件導出數據時,編譯器會產生以下錯誤:
java.io.FileNotFoundException: ru/iteco/blockchain/rzd/cred/core/server/db/hibernate/dao/contract/contract-data.xml (No such file or directory).
這是代碼的相應部分:
@Before
public void setUp() throws Exception {
super.setUp();
beforeData = new FlatXmlDataSet(
new InputStreamReader(new FileInputStream(
"ru/iteco/blockchain/rzd/cred/core/server/db/hibernate/dao/contract/contract-data.xml"),
"utf-8"));
tester.setDataSet(beforeData);
tester.onSetup();
}
變量beforeData的類型為IDataSet。 Java類駐留在名為的文件夾中
/src/test/java/ru/iteco/blockchain/rzd/cred/core/server/db/hibernate/dao/ContractDAOImplTest.java
xml文件位於名為的文件夾中
/src/test/resources/ru.iteco.blockchain.rzd.cred.core.server.db.hibernate.dao.contract/contract-data.xml
如果有人能解釋錯誤的原因,我將不勝感激。
“ ru / iteco / blockchain / rzd /
這是一個相對路徑,這意味着它基於當前目錄。 該錯誤表示相對於您從中運行它的當前目錄不存在。
最好從類路徑加載資源文件以消除相對目錄問題,例如this.getClass().getResource(filename)
。
考慮使用FlatXmlDataFileLoader.load(String filename)
因為它可以為您正確地執行操作(該方法在其父類中)。
更新:
我不太了解我應該從建議的內容中使用什么。
如果“ ru / iteco / blockchain / rzd / cred / core / server / db / hibernate / dao / contract / contract-data.xml”在類路徑上,則
beforeData = new FlatXmlDataFileLoader.load("/ru/iteco/blockchain/rzd/cred/core/server/db/hibernate/dao/contract/contract-data.xml");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.