Eclipse Mybati正在Tomcat目录中查找xml文件

Eclipse Mybati正在Tomcat目录中查找xml文件,eclipse,tomcat,mybatis,Eclipse,Tomcat,Mybatis,我正在用Eclipse+Tomcat测试一个web应用程序,Eclipse部署web应用程序文件并启动Tomcat,应用程序运行良好。但是当MyBatis试图打开它的XML配置文件时,它会在 C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\persistence\db\oracle.xml 而不是正确的位置: C:\workspace\mywebapp\src\persistence\db\oracle.xml MyBat

我正在用Eclipse+Tomcat测试一个web应用程序,Eclipse部署web应用程序文件并启动Tomcat,应用程序运行良好。但是当MyBatis试图打开它的XML配置文件时,它会在

C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\persistence\db\oracle.xml
而不是正确的位置:

C:\workspace\mywebapp\src\persistence\db\oracle.xml
MyBatis应该在哪里查找XML文件

编辑:

这是我指定相对路径的地方:

String cfgFile = "persistence/db/oracle.xml";
Reader reader  = Resources.getResourceAsReader(cfgFile);
session.put(db, new SqlSessionFactoryBuilder().build(reader));

也许你需要另一个类加载器1。试试这个:

String cfgFile = "persistence/db/oracle.xml";
ClassLoader classloader = Thread.currentThread().getContextClassLoader()
Reader reader  = Resources.getResourceAsReader(classloader, cfgFile);

注释

  • 请参阅,您可能希望查看
    org.apache.ibatis.io.Resources
    的代码。你找到了

  • Resources.getResourceAsReader
    在类路径中查找文件。对于在tomcat类路径中运行的web应用程序,它由
    web-INF/classes
    web-INF/lib
    中的所有JAR以及类似
    $tomcat\u HOME\lib
    的tomcat文件夹组成

    您遇到的问题很可能是由于未将
    oracle.xml
    文件添加到部署中。看起来
    c:\workspace\myweapp\src
    不在eclipse项目的源文件夹中,因此eclipse不会将文件从源文件夹复制到部署到tomcat的文件夹中。根据您现有的项目结构,您可能需要在src中创建子文件夹,并在所有子文件夹中添加
    persistence
    。如果src的某个子文件夹已经是eclipse中的源文件夹,这将允许您避免冲突。我建议使用:

    我用
    *
    标记了应该作为源文件夹添加到eclipse的文件夹


    请注意,说
    C:\workspace\mywebapp\src\persistence\db\oracle.xml
    是搜索它的正确位置是不正确的。创建war以将其部署到生产服务器上后,此路径很可能在生产服务器上不可用。您真正需要的是将
    persistence\db\oracle.xml
    添加到war的适当位置(在
    WEB-INF/classes
    下)

    你能分享你用来加载MyBatis的XML的代码吗?你在使用maven(
    pom.XML
    )?不,我没有使用maven分析你的答案我意识到我的cfgFile变量中有大小写问题。Eclipse检测到Java源文件中存在这样的问题,并显示红色的错误图标,但XML文件中的问题与本例不同
    src
       main
          * java  
              you java source code here organized by package
          * resources
              persistence