wisdommee
2020-11-25 08:55
采纳率: 100%
浏览 169
已采纳

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文件夹

求大佬解答,谢谢谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • 懒懒的小菜鸟 2020-11-25 09:52
    已采纳

    试下用这个获取路径:

     

    String resource = this.getClass().getClassLoader().getResource("mybatis-config.xml").getPath();

    然后再:

    inputStream = Resources.getResourceAsStream(resource);
    点赞 打赏 评论
  • 法式小面包啊 2020-11-25 09:32

    检查一下扫描配置文件路径是否正确及文件名  把mappers 改成mapper 试试

    点赞 打赏 评论
  • wisdommee 2020-11-25 09:36

    试过了还是不行的。

    这个应该和mappers没关系吧,因为我是config获取不到而不是mapper。

    刚刚又试了一些,发现好像是getResourceAsStream获取不到文件,就是什么文件都获取不到

    点赞 打赏 评论
  • wisdommee 2020-11-25 09:38

    我也试过了不少其他的方法,比如路径前面加/,使用Class.getClassLoader().getResourceAsStream()都是不行的

    点赞 打赏 评论
  • wisdommee 2020-11-25 09:38

    哦对了,扫描配置文件路径是什么

    点赞 打赏 评论
  • wisdommee 2020-11-25 10:22
    this.getClass().getClassLoader().getResource("mybatis-config.xml").getPath();

    可以换成

    MybatisUtils.class.getClassLoader().getResource("mybatis-config.xml").getPath();

     
    点赞 打赏 评论
  • wisdommee 2020-11-25 10:24

    不行呢,还是报错,我用的是 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

    点赞 打赏 评论
  • zhshchilss 2020-11-25 17:51
    new ClassPathResource(path).getInputStream();
    点赞 打赏 评论
  • wisdommee 2020-11-27 07:51

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

    点赞 打赏 评论

相关推荐 更多相似问题