昨天才搭好的运行环境,可以正常运行,今天就找不到文件了。
记录一下学习过程中遇到的一些奇怪的问题,等以后回过头来看看自已从前遇到的问题有多么的,,,,。
问题未解决,
删除项目重建项目才没有出现这个报错。
报错信息:
Exception in thread "main" java.io.IOException: Could not find resource SqlMapConfig.xml
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:114)
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:100)
at ny.test.Testdao.main(Testdao.java:16)
测试代码:
package ny.test;
import ny.dao.TestDao;
import ny.domain.Test;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class Testdao {
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
System.out.println("----------------------001------------------------");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
System.out.println("----------------------002------------------------");
SqlSessionFactory factory = builder.build(in);
System.out.println("----------------------003------------------------");
//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
System.out.println("----------------------004------------------------");
//4.使用SqlSession创建Dao接口的代理对象
TestDao testDao = session.getMapper(TestDao.class);
System.out.println("----------------------005------------------------");
//5.使用代理对象执行方法
List<Test> tests = testDao.findAll();
System.out.println("----------------------006------------------------");
for(Test test : tests){
System.out.println(test);
}
//6.释放资源
session.close();
System.out.println("----------------------007------------------------");
in.close();
System.out.println("----------------------008------------------------");
}
}
之前正常的项目,现在第一步就出问题,表示很奇怪。
重启idea没有用。
但是另一个相似demo项目却可以运行。说明肯定有哪里是有问题的?
项目中只有两类文件,一个实体类,一个接口类,讲道理不会出问题的。
检查了n遍,也确实没有问题。
配置文件SqlMapConfig.xml也是在maven生成的resources文件夹中的。
启动Debug,看看问题出在哪?
单独一个Debug也看不懂啥,
所以同时启动一个正常的项目Debug,看看两者的问题所在,
正常项目:
异常项目:
好吧,刚运行两步就发现区别了,
这个方法的传入参数都一样,但是,方法中得到的 in 的值去不同。
public static InputStream getResourceAsStream (ClassLoader loader, String resource)
接下来重新运行项目到
InputStream in = classLoaderWrapper.getResourceAsStream(resource, loader);
这行,然后跳入查看方法调用过程是从哪里开始出现错误的。
两个项目都一步一步的跳入查看。
第二个有区别的位置:
正常项目:
异常项目:
然后再在出现区别的位置打个断点,然后重新运行到这个断点位置。
啊,脑瓜疼。
我直接复制正常的项目重新部署好了。
讲道理这到底是什么问题啊?
完了,把可以运行的项目整体复制到这个工程里面来,也还是报这个不能读取文件的错误。
删掉了这个项目重新创建后就没有这个异常了。
结论:我肯定没有拼写错误。
肯定这个工程那里配置有问题。