mybatis配置文件找不到,但是jar包里有

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();

问题解决了,是因为不能热更新,热更新会导致找不到配置文件。