2015-02-06 35 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