【问题标题】:MyBatis cannot find mybatis-config.xmlMyBatis 找不到 mybatis-config.xml
【发布时间】:2018-11-06 20:23:19
【问题描述】:

我无法让 MyBatis (3.4.6) 正常工作。

我已将我的 mybatis-config.xml 文件放在项目的 src/main/resources 文件夹中,但是当我运行单元测试时出现以下错误.

> 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 是否配置为源文件夹?
  • 是的,我从 Eclipse IDE 运行单元测试,并且 src/main/resources 已添加为源文件夹。
  • 那么您需要提供最小的可验证示例来演示问题。当我将它导入 Eclipse 并运行测试时,这个 minimal example 工作得很好。尝试从您的项目中逐渐删除一些东西,以获得仍然不起作用的最小部分,并将其与我的示例进行比较。

标签: java mybatis


【解决方案1】:

感谢各位大侠的指点,我知道出了什么问题。

这是我 15 年编程中见过的最奇怪的 Eclipse 配置问题,不知何故,项目中的所有 XML 文件都被标记为 TEXT 文件。

认为是时候迁移到 IntelliJ 了。

【讨论】:

    【解决方案2】:

    这完全取决于您的Resources 班级在做什么。也许尝试使用“/mybatis-config.xml”(注意前导斜杠)。

    【讨论】:

    • 这是 mybatis 类,它使用另一个类 appends '/' 以防它无法加载具有提供名称的资源。
    • 看起来像一个类路径问题。您可能只想使用getClass().getResourceAsStream(..) 来确保一切正常。此外,请仔细检查 src/main/resources 文件夹是否确实在类路径中。
    【解决方案3】:

    我意识到这是一个老问题,但对于那些偶然发现这个问题的人,除了常规代码的文件之外,我还会将该 config.xml 文件放在 src/test/resources 下。您可能需要不同的测试配置。

    【讨论】:

      【解决方案4】:

      您可以使用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 文件夹中。

      【讨论】:

        【解决方案5】:

        如果您使用IDEA,您可以尝试将资源文件夹标记为根资源文件,以便程序可以找到xml文件。

        【讨论】:

        • OP 正在寻找基于代码的解决方案。我不确定这如何与他的查询保持一致
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-18
        • 1970-01-01
        • 2013-11-10
        • 2018-03-30
        • 1970-01-01
        • 2022-06-24
        相关资源
        最近更新 更多