我是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个
答案 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