48

我的项目是这样的:

/src/main/java
     -thegamers
         -app.java
         -hibernateutil.java

有人能告诉我把hibernate.cfg.xml放在哪里吗?

因为我收到了这个错误:

Initial SessionFactory creation failed.org.hibernate.HibernateException: hibernate.cfg.xml not found
Exception in thread "main" java.lang.ExceptionInInitializerError
    at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
    at thegamers.HibernateUtil.<clinit>(HibernateUtil.java:8)
    at thegamers.App.main(App.java:15)
Caused by: org.hibernate.HibernateException: hibernate.cfg.xml not found
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2149)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2130)
    at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
    ... 2 more
4

9 回答 9

34

配置文件hibernate.cfg.xml需要在classpath.

这可以通过不同的方式完成,具体取决于您的项目。

  • 对于web-app WAR项目(您在 Servlet 容器中运行程序):将其放入WEB-INF/classes将起作用,因为WEB-INF/classes当应用程序在容器中运行时,文件在类路径中可见。

  • 对于Maven风格的项目(不在 Servlet 容器中运行程序):将其放入/src/main/resources/将起作用

  • 否则,请在src/目录中尝试。

于 2015-03-30T17:31:36.550 回答
14

我正在使用 maven,直到我将 hibernate.cfg.xml 放入src/main/resources.

于 2014-04-15T16:58:31.300 回答
11

在您的项目的根目录:(/src至少默认情况下)

如何知道是否/src是源目录?
当您创建一个新的 Java 类时,它包含在一个包中(通常它与创建它的目录的名称相同)。因此,在您的班级声明中,您可以看到如下内容:

package foo;

class MyClass{

在默认 IDE 设置中,该类应位于/src/foo/MyClass.java. 如您所见,在这种情况下/src充当根源目录。

于 2012-10-01T17:11:00.193 回答
4

如果它不是网络项目,那么明确地这样做

new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()

希望这可能会有所帮助

@SiB 指出了一个链接(mkyong 的网站)。那里解释得很好。

于 2012-10-01T17:22:59.330 回答
2

该文件假设进入您的目录的根/src目录,虽然/src没有部署,但其中的所有内容都是构建/复制出来的WEB-INF/classesIS 部署。Hibernate 需要项目cfg.xml中的文件来加载classpath其配置设置,您的WEB-INF目录不在您classpath的.

线程将告诉您如何从任何不同的路径加载 hibernate.cfg.xml。

于 2012-10-01T17:14:37.397 回答
1

如果您使用的是 Eclipse,请转到 Project -> Properties -> Java Build Path -> Source。您可以添加放置文件的新文件夹,或将文件移动到现有文件夹。

于 2013-05-24T05:56:57.387 回答
0

CMD+N/CTR+N 当你在 Eclips 上时,它会打开一个对话框,你必须复制点击 Hibernate 文件夹。它将打开带有 XML 扩展名的文件列表。选择 cfg.xml 并单击继续,完成后!点击完成。Eclips 现在将在 cfg.xml 文件中添加类名称并将其显示在 SRC 文件夹下。国标

于 2014-11-11T14:52:41.567 回答
0

放置hibernate.cfg.xmlsrc/文件夹下或在代码中明确提及路径:

new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()
于 2017-08-21T13:12:35.483 回答
-1

尝试将其放入“ src/main/resources”目录。

于 2017-09-07T14:56:06.500 回答