You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate无法定位hibernate.cfg.xml资源的报错原因及解决方法

解决Hibernate找不到hibernate.cfg.xml及空指针异常问题

先看你给出的报错信息,核心问题有两个,咱们一步步拆解:

报错原因分析

  1. 找不到hibernate.cfg.xml:
    报错里的Could not locate cfg.xml resource [hibernate.cfg.xml]是根源。Hibernate默认会在类路径(classpath)的根目录下查找这个配置文件,但你说所有文件都放在同一个包下,这就意味着hibernate.cfg.xml被放到了包目录里,而不是classpath根,Hibernate自然找不到它。
  2. NullPointerException:
    因为SessionFactory创建失败,session变量一直是null,最后在finally块里调用session.close()时,就触发了空指针异常。

具体解决方案

1. 修正配置文件的位置(推荐方案)

如果是普通Java项目,把hibernate.cfg.xml移动到项目的src目录根下;如果是Maven/Gradle项目,放到src/main/resources目录下。这样编译后,配置文件会被自动放到classpath的根目录,Hibernate就能正常加载它了。

2. 手动指定配置文件路径(如果不想移动文件)

如果你坚持把配置文件放在当前包下,可以修改UtilHibernate里的代码,明确指定配置文件的资源路径:

sessionFactory = new Configuration().configure("/Hibernate/hibernate.cfg.xml").buildSessionFactory();

这里的/Hibernate/是你的包名(注意大小写),前面的斜杠表示从classpath根目录开始查找。

3. 修复空指针异常

不管配置文件的问题有没有解决,都要给finally块加个非空判断,避免session为null时调用close:

finally {
    if (session != null && session.isOpen()) {
        session.close();
    }
}

额外检查点

  • 确认hibernate.cfg.xml的文件名拼写完全正确,注意大小写(比如Linux/Mac系统对文件名大小写敏感,别写成Hibernate.cfg.xml)。
  • 打开hibernate.cfg.xml检查XML语法是否正确,比如标签有没有闭合,数据库连接URL、用户名密码是否配置正确。

内容的提问来源于stack exchange,提问作者EndymionSpring

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:37:22