在哪里放置hibernate.cfg.xml?

时间:2012-10-01 17:06:30

标签: hibernate hibernate.cfg.xml

我的项目是这样的:

/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

9 个答案:

答案 0 :(得分:23)

配置文件hibernate.cfg.xml需要位于classpath

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

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

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

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

答案 1 :(得分:14)

我正在使用maven,直到我将hibernate.cfg.xml放在src/main/resources中它才能为我工作。

答案 2 :(得分:11)

项目的根目录:/src(默认为leat)

如何知道/src是否为来源目录?
创建新的Java类时,它包含在一个包中(通常它被称为创建它的dir的相同名称)。所以,在你的班级宣言中,你可以看到类似的东西:

package foo;

class MyClass{

在默认IDE设置中,该类应位于/src/foo/MyClass.java下。如您所见,在此方案中,/src充当根源dir。

答案 3 :(得分:4)

如果它不是web项目,那么明确地做那个

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

希望这可能会有所帮助

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

答案 4 :(得分:2)

该文件假设进入/src目录的根目录,而/src未部署,其中的所有内容都构建/复制到部署的WEB-INF/classes。 Hibernate需要项目cfg.xml中的classpath文件来加载其配置设置,WEB-INF目录不在您的classpath中,所以如果您要将其放在那里,你将隐藏它来自Hibernate并且它不起作用。

这个thread会告诉你如何从任何不同的路径加载hibernate.cfg.xml。

答案 5 :(得分:1)

如果您使用的是Eclipse,请转到Project - &gt;属性 - &gt; Java构建路径 - &gt;资源。您可以添加放置文件的新文件夹,或将文件移动到现有文件夹。

答案 6 :(得分:0)

当您使用Eclips时,

CMD + N / CTR + N,它将打开一个对话框,您必须点击Hibernate文件夹。 它将打开XML扩展的文件列表。 选择cfg.xml并单击继续,完成后!点击完成。 Eclips现在将使用cfg.xml文件添加Class名称并将其显示在SRC文件夹下。 GB

答案 7 :(得分:0)

AsEnumerable()放在var elements = StringInfo.GetTextElementEnumerator(text).AsEnumerable(); var reversedText = String.Concat(elements.Reverse()); 文件夹下,或在代码中明确提及路径:

hibernate.cfg.xml

答案 8 :(得分:0)

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