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
相关产品推荐
相关产品推荐

