gpt4 book ai didi

java - 离线时无法解析 hibernate.cfg.xml

转载 作者:太空狗 更新时间:2023-10-29 22:38:09 25 4
gpt4 key购买 nike

每当我与互联网断开连接时,我都会收到以下异常:

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>

最佳答案

Hibernate 可以在本地解析 DTD(无需网络连接)。

您的 DOCTYPE 使用 Hibernate 3.6 的新命名空间 ( http://www.hibernate.org/dtd/ ),因此您的类路径中可能有旧版本的 Hibernate 库。

升级到 Hibernate 3.6.8.Final 后,我遇到了同样的问题。我在类路径上有多个版本的 hibernate3.jar,导致加载旧的不兼容版本 DTD Entity Resolver,它只适用于旧的命名空间 (http://hibernate.sourceforge.net/)。作为引用,这是更新的 DTD Entity Resolver 的链接。

我正在使用 hibernate3-maven-plugin,它对旧版本的 Hibernate 具有传递依赖性,因此我只需要指定对 Hibernate 3.6.8.Final 的插件依赖性。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
...
</configuration>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.8.Final</version>
</dependency>
</dependencies>
</plugin>

关于java - 离线时无法解析 hibernate.cfg.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com