MyBatis не может найти mybatis-config.xml

У меня проблемы с работой 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();
}

У кого-нибудь есть идеи?

Как вы запускаете модульные тесты? Вы используете IDE, maven или gradle? Если вы используете IDE, правильно ли настроен ваш проект, а именно src/main/resources настроен как исходная папка?

Roman Konoval 06.11.2018 22:42

Да, я запускаю модульные тесты из eclipse IDE, и src / main / resources был добавлен в качестве исходной папки.

user1094865 06.11.2018 23:17

Затем вам нужно предоставить минимально проверяемый пример, демонстрирующий проблему. Этот минимальный пример отлично работает, когда я импортирую его в eclipse и запускаю тест. Постарайтесь постепенно удалять элементы из своего проекта, чтобы получить минимальное, что все еще не работает, и сравните это с моим примером.

Roman Konoval 06.11.2018 23:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
3
1 987
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Все зависит от того, что делает ваш класс Resources. Может быть, попробуйте с "/mybatis-config.xml" (обратите внимание на косую черту в начале).

Это класс mybatis, и он использует другой класс, добавляет '/', на случай, если ему не удалось загрузить ресурс с указанным именем.

Roman Konoval 06.11.2018 22:33

Похоже на проблему пути к классам. Вы можете просто использовать getClass().getResourceAsStream(..), чтобы убедиться, что все в порядке. Кроме того, еще раз проверьте, действительно ли папка src/main/resources находится в пути к классам.

Robert Munteanu 07.11.2018 14:05
Ответ принят как подходящий

Спасибо за вклад, я понял, в чем дело.

Это была самая странная проблема с конфигурацией 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 ищет решения на основе кода. Я не уверен, как это согласуется с его запросом

mishsx 16.07.2020 04:48

Другие вопросы по теме