У меня проблемы с работой MyBatis (3.4.6).
Я поместил свой файл mybatis-config.xml в папку SRC / основные / ресурсы моего проекта, но когда я запускаю модульный тест, я получаю следующую ошибку.
> java.io.IOException: Could not find resource mybatis-config.xml at
> org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:114)
Это код, который я использую для чтения XML-файла.
String resource = "mybatis-config.xml";
try
{
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException ex) {
ex.printStackTrace();
}
У кого-нибудь есть идеи?
Да, я запускаю модульные тесты из eclipse IDE, и src / main / resources был добавлен в качестве исходной папки.
Затем вам нужно предоставить минимально проверяемый пример, демонстрирующий проблему. Этот минимальный пример отлично работает, когда я импортирую его в eclipse и запускаю тест. Постарайтесь постепенно удалять элементы из своего проекта, чтобы получить минимальное, что все еще не работает, и сравните это с моим примером.




Все зависит от того, что делает ваш класс Resources. Может быть, попробуйте с "/mybatis-config.xml" (обратите внимание на косую черту в начале).
Это класс mybatis, и он использует другой класс, добавляет '/', на случай, если ему не удалось загрузить ресурс с указанным именем.
Похоже на проблему пути к классам. Вы можете просто использовать getClass().getResourceAsStream(..), чтобы убедиться, что все в порядке. Кроме того, еще раз проверьте, действительно ли папка src/main/resources находится в пути к классам.
Спасибо за вклад, я понял, в чем дело.
Это была самая странная проблема с конфигурацией Eclipse, которую я видел за 15 лет программирования: каким-то образом все файлы XML в проекте были помечены как файлы TEXT.
Думаю, пришло время перейти на IntelliJ.
Я понимаю, что это старый вопрос, но для тех, кто наткнется на него, я бы поместил этот файл config.xml в src / test / resources в дополнение к файлу для обычного кода. Возможно, вам понадобится другая тестовая конфигурация.
Вы можете использовать SQLMapClient для чтения файла SqlConfig.
private static String path= "/sqlmap-config.xml";
public static SqlMapClient getSqlMapInstance() throws IOException {
Reader reader = Resources.getResourceAsReader(path);
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
return sqlMapClient;
}
убедитесь, что ваш sqlmap-config.xml находится в папке пути к классам resoures.
Если вы используете IDEA, вы можете попробовать пометить папку ресурсов как корневой файл ресурсов, чтобы программа могла найти файл xml.
OP ищет решения на основе кода. Я не уверен, как это согласуется с его запросом
Как вы запускаете модульные тесты? Вы используете IDE, maven или gradle? Если вы используете IDE, правильно ли настроен ваш проект, а именно
src/main/resourcesнастроен как исходная папка?