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

Hibernate.cfg.xml не найден

Я новичок в Hibernate, читаю эту книгу "Сохранение Java с Hibernate", и я пытаюсь реализовать пример оттуда. До сих пор моя сборка Ant прошла успешно, но когда я пытаюсь выполнить класс, содержащий основной метод, я получаю следующее сообщение об ошибке:

19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.3
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
19-Nov-2011 18:40:09 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
19-Nov-2011 18:40:09 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
    at persistence.HibernateUtil.<clinit>(Unknown Source)
    at hello.Driver.main(Unknown Source)
Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147)
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1405)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1427)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
    ... 2 more

Понятно, что hibernate не может найти мой файл конфигурации, который находится в корневом каталоге.

Проект

+lib
<all required libraries>
+src
  +hello
    HelloWorld.java
    Message.java
    message.hbm.xml
  +persistence
    HibernateUtil.java
build.xml
hibernate.cfg.xml

Мой полный исходный код можно найти здесь: http://pastebin.com/bGDUrxUf

У меня есть работающий сервер MySQL с данными hibernateapp и табличными сообщениями

Спасибо:)

4b9b3361

Ответ 1

Ваш hibernate.cfg.xml должен находиться внутри каталога src; в противном случае он не будет покрываться целевым объектом Ant copymetafiles, поэтому он не попадет в ваш скомпилированный путь к классам.

Ответ 2

Файл hibernate.cfg.xml shoul находится в корневой директории пути к классу вашего проекта. Если вы используете Maven, убедитесь, что он должен выглядеть как src > resources > hibernate.cfg.xml.

Ответ 3

Это не должно быть в корневом каталоге, оно должно быть в вашем пути к классам.

Ответ 4

Вы можете загрузить hibernate.cfg.xml из другого каталога (не обязательно путь к классам) с помощью метода configure(File configFile), который принимает аргумент hibernateConfig File. (обратите внимание, я использую hibernate 4.3.7)

Вот так:


String hibernatePropsFilePath = "/etc/configs/hibernate.cfg.xml";

File hibernatePropsFile = new File(hibernatePropsFilePath);

Configuration configuration = new Configuration(); 
configuration.configure(hibernatePropsFile);

StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());

ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

Ответ 5

Если вы работаете с Intellij Idea создайте папку с именем "resources" в папке src\main\java. Откройте настройки модуля вашего проекта, выберите "Модули" слева и на вкладке "источники" выберите вновь созданную папку "ресурсы" и отметьте ее как "Ресурсы". Создайте файл hibernate.cfg.xml внутри этой вновь созданной папки "resources". enter image description here

тогда это должно работать

Configuration con = new Configuration().configure("hibernate.cfg.xml");

Ответ 6

Хотя уже поздно. Решение: вам нужно поместить этот файл конфигурации в папку с ресурсами (projectxxxx- > Resources), предоставив проект maven.

Ответ 7

Файл конфигурации XML по умолчанию должен находиться в корне вашего CLASSPATH.

Вы можете выбрать другой файл конфигурации XML или путь, используя:

        SessionFactory sessionFactory;
        try {
            Logger log = Logger.getLogger(LOG);
            final String HIB_CONFIG = "/path/to/hibernate.cfg.xml";

            final File hibernate = new File(HIB_CONFIG);
            log.info("Try to init SessionFactory: " + HIB_CONFIG);

            // Create the SessionFactory from hibernate.cfg.xml
            if (hibernate.exists()) {
                log.info("File exists. Init with custom file.");
                sessionFactory = new Configuration()
                        .configure(hibernate)
                        .buildSessionFactory();
            } else {
                log.info("File does not exist. Init with default project file.");
                sessionFactory = new Configuration().configure().buildSessionFactory();
            }
        } catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }

Для получения дополнительной информации обратитесь к конфигурации сеанса