2015-02-06 33 views
0

我是新來的休眠,並試圖執行一個簡單的休眠jave代碼,但不幸的是我得到這個異常。有人寫了可能是其因DOCTYPE,我在配置文件。這個用的是我的hibernate.cfg.xml文件:休眠異常:無法解析配置: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在 org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1491) at org.hibernate.cfg.Configuration.configure( Configuration.java:1425) at com.javatpoint.mypackage.StoreData.main(StoreData.java:13)引起 由:org.dom4j.DocumentException:連接被拒絕:連接嵌套 例外:連接被拒絕:在 org.hibernate.cfg.Configuration.doConfigure在 org.dom4j.io.SAXReader.read(SAXReader.java:484)連接(Configuration.java:1481) ... 2個

+1

請添加完整堆棧跟蹤。 – Jens 2015-02-06 12:12:48

+0

在hibernate.cfg.xml中發佈您的Doctype聲明 – 2015-02-06 12:15:06

+1

<!DOCTYPE hibernate-configuration PUBLIC 「 - // Hibernate/Hibernate Configuration DTD 3.0 // EN」 「http://www.hibernate.org/dtd/hibernate -configuration-3.0.dtd「> – 2015-02-06 12:16:14

回答

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

你的DOCTYPE是使用新的命名空間(http://www.hibernate.org/dtd/)對Hibernate 3.6,你可能在你的classpath中有Hibernate庫的舊版本。

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

你正在使用哪個版本的hibernate? – 2015-02-06 12:32:51

0

這一個是一個臨時解決方案更換。您的Hibernate jar包含dtd用於驗證您的配置xml。提取'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