FileInputStream не может найти файл intelliJ идея - PullRequest
0 голосов
/ 11 мая 2018

Я пишу тест 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

Я будуочень благодарен, если кто-нибудь может объяснить, в чем причина ошибки.

1 Ответ

0 голосов
/ 12 мая 2018

"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");
...