Eclipse Mybati正在Tomcat目录中查找xml文件
我正在用Eclipse+Tomcat测试一个web应用程序,Eclipse部署web应用程序文件并启动Tomcat,应用程序运行良好。但是当MyBatis试图打开它的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
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