Подтвердить что ты не робот

Где разместить 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
4b9b3361

Ответ 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.