Где разместить 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
Ответы
Ответ 1
Файл конфигурации hibernate.cfg.xml
должен находиться в classpath
к classpath
.
Это может быть достигнуто различными способами, в зависимости от вашего проекта.
-
Для проекта WAR веб-приложения (вы запускаете программу в контейнере сервлета): размещение его в WEB-INF/classes
будет работать, поскольку файлы в WEB-INF/classes
видны в пути к классам, когда приложение выполняется в контейнере.
-
Для проекта Maven -style (без запуска программы в контейнере сервлета): размещение его в /src/main/resources/
будет работать
-
В противном случае попробуйте в каталоге src/
.
Ответ 2
Я использую maven, и это не сработало для меня, пока я не поместил hibernate.cfg.xml в src/main/resources
.
Ответ 3
В корне вашего проекта: /src
(по умолчанию по умолчанию)
Как узнать, является ли /src
источником dir?
Когда вы создаете новый класс Java, он содержится в пакете (обычно он называется как одноименное имя каталога, где он создается). Итак, в объявлении вашего класса вы можете увидеть что-то вроде этого:
package foo;
class MyClass{
В настройках IDE по умолчанию класс должен находиться под /src/foo/MyClass.java
. Как вы можете видеть, в этом сценарии /src
действует как корневой источник dir.
Ответ 4
если это не веб-проект, тогда явно явно нравится
new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()
Надеюсь, это поможет
@SiB указал ссылку (веб-сайт mkyong). Там хорошо объяснено.
Ответ 5
Файл должен войти в корень вашего /src
dir, а /src
не развернут, все в нем встроено/скопировано в WEB-INF/classes
, который развернут. Hibernate нуждается в файле cfg.xml
в classpath
вашего проекта, чтобы загрузить его настройки конфигурации, ваш каталог WEB-INF
не находится в вашем classpath
, поэтому, если вы его разместили, вы должны быть скрывая его из Hibernate, и это не сработает.
Этот поток расскажет вам, как загрузить hibernate.cfg.xml с любого другого пути.
Ответ 6
Если вы используете Eclipse, перейдите в Project → Properties → Java Build Path → Source. Вы можете добавить новую папку, в которую вы поместили файл, или переместить файл в существующую папку.
Ответ 7
CMD + N/CTR + N, пока вы находитесь на Eclips, он откроет диалоговое окно, в котором вы должны нажать dubbel на папку Hibernate.
Он откроет список файлов с расширением XML.
Выберите cfg.xml и нажмите "Продолжить", и когда все будет готово! нажмите на отделку. Eclips теперь добавит имя класса в файл cfg.xml и покажет его в папке SRC. ГБ
Ответ 8
Поместите hibernate.cfg.xml
в папку src/
или явно укажите путь в коде как:
new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()
Ответ 9
попробуйте поместить его в каталог src/main/resources
.