我的项目是这样的:
/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
答案 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)
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
”目录。