Hibernate异常:无法解析配置:hibernate.cfg.xml

时间:2015-02-06 12:11:12

标签: java hibernate

我是hibernate的新手,并试图执行一个简单的hibernate jave代码,但不幸的是我得到了这个异常。有人写的可能是因为DOCTYPE,我在我的配置文件中使用过。这是我的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">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

    <session-factory>
        <property name="connection.url">jdbc:mysql://localhost:3306/userdb</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <property name="show_sql">true</property>

        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <property name="connection.pool_size">1</property>
        <property name="current_session_context_class">thread</property>
        <mapping resource="employee.hbm.xml" />
    </session-factory>

</hibernate-configuration> 

,例外是:

  

线程“main”中的异常org.hibernate.HibernateException:不能   解析配置:hibernate.cfg.xml at   org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1491)     在org.hibernate.cfg.Configuration.configure(Configuration.java:1425)     在com.javatpoint.mypackage.StoreData.main(StoreData.java:13)引起   by:org.dom4j.DocumentException:连接被拒绝:连接嵌套   异常:连接被拒绝:连接在   org.dom4j.io.SAXReader.read(SAXReader.java:484)at   org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1481)     ......还有2个

2 个答案:

答案 0 :(得分:0)

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

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

将其替换为

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

答案 1 :(得分:0)

这是一个临时解决方案。您的Hibernate jar包含用于验证配置xml的dtd。解压缩'hibernate-configuration-3.0.dtd'并将其放在项目结构的某个目录中(在本例中,我将它放在Project根目录中)。将您的dtd位置添加到DOCTYPE声明。

<!DOCTYPE hibernate-configuration SYSTEM
"hibernate-configuration-3.0.dtd">

它对我有用。它在系统脱机时有效。从本地系统获取DTD。

只是我们必须想办法从你的jar中获取dtd。

你可以这样做:

<!DOCTYPE hibernate-configuration SYSTEM 
    "classpath://org/hibernate/hibernate-configuration-3.0.dtd">

然后,它正在抛出

Caused by: org.dom4j.DocumentException: unknown protocol: classpath Nested exception: unknown protocol: classpath