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

Servlet开发遇HibernateException:hibernate.cfg.xml未找到的原因及解决办法

解决Hibernate配置文件找不到的问题

先看你抛出的错误日志:

org.hibernate.HibernateException: /hibernate.cfg.xml not found 
org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:173) 
org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2093) 
org.hibernate.cfg.Configuration.configure(Configuration.java:2074) 
org.hibernate.cfg.Configuration.configure(Configuration.java:2054) 
com.dede.app1st.controller.AddUser.doPost(AddUser.java:26) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

再结合你提供的IDE目录结构(IDE目录结构截图),问题根源一下子就找到了:你的hibernate.cfg.xml放错位置了!

错误原因

Hibernate默认会在**项目的类路径(classpath)**下查找hibernate.cfg.xml,但你把这个配置文件放在了src/main/java目录里。默认情况下,Maven/Gradle这类构建工具只会编译src/main/java里的.java文件,其他类型的文件不会被复制到最终的classpath目录(也就是WEB-INF/classes)里,导致项目运行时Hibernate找不到这个配置文件。

解决办法

给你几个可行的方案,优先推荐第一个:

  • 移动配置文件到正确目录:把hibernate.cfg.xml直接移到src/main/resources目录下。这个目录是Java项目标准的资源文件存放目录,构建工具会自动把这里的所有文件复制到WEB-INF/classes中,Hibernate启动时就能轻松找到它了。
  • 验证配置文件是否在classpath中:部署项目后,去Tomcat的webapps/你的项目名/WEB-INF/classes目录下看看,确认hibernate.cfg.xml存在。如果没有,检查你的Maven/Gradle配置,确保资源目录没有被错误配置。
  • 手动指定配置文件路径(不推荐):如果实在不想移动文件,可以在代码里手动指定配置文件的路径,比如:
    Configuration config = new Configuration();
    // 这里填写你实际的文件路径,注意打包后路径可能变化
    config.configure("src/main/java/hibernate.cfg.xml");
    
    这种方式灵活性差,项目打包部署后路径容易出问题,所以还是优先用第一种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:31:36