簡體   English   中英

FileInputStream找不到文件智能提示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM