Не могу разобрать hibernate.cfg.xml в автономном режиме - PullRequest
17 голосов
/ 29 ноября 2010

Каждый раз, когда я отключаюсь от Интернета, я получаю следующее исключение:

org.hibernate.HibernateException: Could not parse configuration: com/mashlife/resources/hibernate.cfg.xml
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1542)
    at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1035)
    at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1476)
    at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017)

Caused by: org.dom4j.DocumentException: www.hibernate.org Nested exception: www.hibernate.org
    at org.dom4j.io.SAXReader.read(SAXReader.java:484)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1532)
    ... 45 more

Это только происходит, когда я не в сети. Hibernate пытается прочитать DTD при разборе конфигурации? Какая здесь причина?

Вот мой hibernate.cfg.xml:

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

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/foo</property>
        <property name="connection.username">user</property>
        <property name="connection.password">pass</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- DO NOT Echo all executed SQL to stdout -->
        <property name="show_sql">false</property>

        <!-- Names the annotated entity class -->
        <!--<mapping class="org.hibernate.tutorial.annotations.Event"/>-->

    </session-factory>

</hibernate-configuration>

Ответы [ 13 ]

0 голосов
/ 04 ноября 2014

У меня тоже была эта проблема. Мой DOCTYPE был:

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">

Должно быть:

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

Вы видите разницу? Первый URI имеет www, а второй URI www

Таким образом, www в URI должен быть объявлен в файле конфигурации и во всех файлах сопоставления.

Это не ваш случай (потому что я вижу, что у вас есть http://www... URI), но это может кому-то помочь.

Привет.

0 голосов
/ 30 мая 2013

В файлах сопоставления у вас должен быть тот же самый тип документа, который указан в DTD сопоставления.

Тогда и только тогда вы увидите, что dtd, найденный в hibernate3.jar, может быть найден через путь к классам, и запуск за брандмауэром, в автономном режиме и т. Д. Вообще не будет проблемой. Нет локальных dtd в ваших проектах, чтобы решить эту проблему, нет кода для перехвата. : -)

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

То же самое, конечно, применимо к файлу конфигурации.

0 голосов
/ 29 ноября 2010

Вы можете использовать внутренний DTD (не очень IMO) или загрузить файл DTD в свою файловую систему.

Проверьте W3Schools 'для получения дополнительной информации: http://www.w3schools.com/dtd/dtd_intro.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...