Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Не находит hibernate.cfg.xml


Автор: force 15.8.2007, 00:25
Вот решил наконец-то ознакомиться с hibernate. Возникла проблема. Взял небольшйо пример с учебника и решил его запустить. Не находит файл конфигурации (вроде как судя по исключению). Он леижит в папке src, как положено. Вылетает следующее исключение:
Exception in thread "main" java.lang.ExceptionInInitializerError
    at myp.persistence.HibernateUtil.<clinit>(HibernateUtil.java:17)
    at myp.hello.HelloWorld.main(HelloWorld.java:14)
Caused by: java.lang.ExceptionInInitializerError
    at org.hibernate.cfg.Configuration.reset(Configuration.java:168)
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:187)
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:191)
    at myp.persistence.HibernateUtil.<clinit>(HibernateUtil.java:15)
    ... 1 more
Caused by: java.lang.NullPointerException
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:144)
    at org.hibernate.cfg.Environment.<clinit>(Environment.java:515)
    ... 5 more

Вот сам файл:
Код

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration
        PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>

        <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost</property>
        <property name="hibernate.connection.username">sa</property>

        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
        <mapping resource="myp/hello/Message.hbm.xml"/>

    </session-factory>
</hibernate-configuration>


Исключение это вылетает у меня на такой строке:
Код

sessionFactory = new Configuration().configure().buildSessionFactory();

ДАже если методу configure передам полностью путь к файлу, все равно вылетает. Подскажите, в чем может быть проблема. 

Автор: tux 15.8.2007, 00:49
hibernate.cfg.xml должен лежать там, где скомпилированные классы лежат, а не там где исходники. Хотя, возможно, что у тебя это одно и то же место.

Цитата(force @  15.8.2007,  00:25 Найти цитируемый пост)
ДАже если методу configure передам полностью путь к файлу, все равно вылетает. 

Дак ему нельзя передать никакой полный путь, ему можно передать имя ресурса.

Автор: force 15.8.2007, 08:36
tux, Ну так при компиляции он сам туда копируется. Т.е. получается папка с откомпилированными классами bin, в ней hibernate.cfg.xml и папка с package. Т.е. всё правильно. Но откуда этот exception берется, не пойму. 

Автор: force 15.8.2007, 09:26
Забыл добавить, что такое исключение вылетает только при добавлении hibernate3.jar к classpath клиента. Если этого не сделать, то на строке new Configuration().configure() просто виснет, при этом не исклюений, ничего не вылетает. Проблему решил. Заменил БД HSQLDB на PostgreSQL. Всё заработало. Но в чем проблема с HSQLDB мне не понятно до сих пор. 

Автор: tux 15.8.2007, 09:41
Цитата(force @  15.8.2007,  09:26 Найти цитируемый пост)
Но в чем проблема с HSQLDB мне не понятно до сих пор. 

Видимо в URL подключения. Он имеет либо такой формат
Цитата

jdbc:hsqldb:database

либо такой
Цитата

jdbc:hqsldb://host/database

А у тебя какой-то гибрид.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)