mybatis配置文件找不到,但是jar包里有
Mybatis打包之后明显是有mybatis-config.xml的配置文件,但是就是死活找不到,提示
是怎么回事啊,网上的答案都是解决没有xml没有打包进jar包里的
从上面可以看出来,jar包里是有mybatis-config.xml的,而且也编译了
这是我的Mybatis工具类
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis-config.xml";
Properties properties = new Properties();
properties.setProperty("username", Pharmacist.getInstance().getConfig().getString("database.username"));
properties.setProperty("password", Pharmacist.getInstance().getConfig().getString("database.password"));
String port = Pharmacist.getInstance().getConfig().getString("database.port");
String database = Pharmacist.getInstance().getConfig().getString("database.name");
String host = Pharmacist.getInstance().getConfig().getString("database.host");
String url = "jdbc:mysql://" + host + ":" + port + "/" + database + "?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
properties.setProperty("url", url);
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, properties);
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession(true);
}
}
我的resources文件夹
求大佬解答,谢谢谢谢!
试下用这个获取路径:
String resource = this.getClass().getClassLoader().getResource("mybatis-config.xml").getPath();
然后再:
inputStream = Resources.getResourceAsStream(resource);
检查一下扫描配置文件路径是否正确及文件名 把mappers 改成mapper 试试
试过了还是不行的。
这个应该和mappers没关系吧,因为我是config获取不到而不是mapper。
刚刚又试了一些,发现好像是getResourceAsStream获取不到文件,就是什么文件都获取不到
我也试过了不少其他的方法,比如路径前面加/,使用Class.getClassLoader().getResourceAsStream()都是不行的
哦对了,扫描配置文件路径是什么
this.getClass().getClassLoader().getResource("mybatis-config.xml").getPath();
可以换成
MybatisUtils.class.getClassLoader().getResource("mybatis-config.xml").getPath();
吗
不行呢,还是报错,我用的是 MybatisUtils.class.getClassLoader().getResource("mybatis-config.xml").getPath();
java.io.IOException: Could not find resource file:/D:/MinecraftServers/Lock/plugins/Pharmacist-0.0.1.jar!/mybatis-config.xml
new ClassPathResource(path).getInputStream();
问题解决了,是因为不能热更新,热更新会导致找不到配置文件。