Вопрос

Мой проект выглядит следующим образом:

/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".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top