Где разместить hibernate.cfg.xml?
-
12-12-2019 - |
Вопрос
Мой проект выглядит следующим образом:
/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
Решение
Конфигурационный файл hibernate.cfg.xml
должен быть на classpath
.
Это может быть достигнуто различными способами, в зависимости от вашего проекта.
Для война веб-приложений проект (вы запускаете программу в контейнере сервлета):помещая его в
WEB-INF/classes
будут работать как файлы вWEB-INF/classes
видны в пути к классу, когда приложение запущено в контейнере.Для Знаток-проект в стиле (не запуск программы в контейнере сервлета):помещая его в
/src/main/resources/
будет работатьВ противном случае попробуйте в
src/
каталог.
Другие советы
Я использую Maven, и это не работало для меня, пока я не поставлю Hibernate.cfg.xml в src/main/resources
.
В корне вашего проекта: /src
(по крайней мере, по умолчанию)
Как узнать, если /src
является ли sources dir?
Когда вы создаете новый класс Java, он содержится в пакете (обычно он вызывается с тем же именем каталога, в котором он создан).Итак, в объявлении вашего класса вы можете увидеть что-то вроде этого:
package foo;
class MyClass{
В настройках IDE по умолчанию класс должен быть найден в разделе /src/foo/MyClass.java
.Как вы можете видеть, в этом сценарии /src
действует как root sources dir.
Если это не веб-проект, то ясно используйте это
new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()
.
Надеюсь, это может помочь
@sib указал на ссылку (веб-сайт Mkyong).Там объясняется там.
Предполагается, что файл находится в корневом каталоге вашего /src
реж, в то время как /src
не развернут, все в нем встроено / скопировано в WEB-INF/classes
который развернут.Спящий режим нуждается в cfg.xml
файл в classpath
из вашего проекта, чтобы загрузить его конфигурационные параметры, ваш WEB-INF
режиссера нет в вашем classpath
, так что, если бы вы поместили это туда, вы были бы прячется он вышел из спящего режима, и это не сработало бы.
Этот нить рассказал бы вам, как загрузить hibernate.cfg.xml с любого другого пути.
Если вы используете Eclipse, перейдите в Project -> Properties -> Path java build -> Источник.Вы можете добавить новую папку, в которую вы поместили файл, или переместите файл в существующую папку.
cmd + n / ctr + n Хотя вы находитесь в Eclips, он откроет диалоговое окно там, что вам нужно Dubbel Нажмите на папку Hibernate. Он откроет список файлов с осеванием XML. Выберите CFG.XML и нажмите «Продолжить» и когда вы закончите!Нажмите на конец.Eclips теперь добавит имя класса с файлом CFG.XML и показать его под папкой SRC.GB
Place hibernate.cfg.xml
под папкой src/
или явно упомянуть путь в коде как:
new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()
. Постарайтесь разместить его в каталог "src/main/resources
".