org.hibernate.HibernateException:无法解析配置:hibernate.cfg.xml
时间:2020-02-23 14:44:23 来源:igfitidea点击:
如果您正在寻找针对org.hibernate.HibernateException的解决方案:无法解析配置:hibernate.cfg.xml,那么您来对地方了。
最近我正在开发一个Hibernate项目,最新版本为4.3.5.Final,一切进展顺利。
突然我失去了一段时间的互联网连接,该项目停止工作,并引发异常。
Initial SessionFactory creation failed.org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2163) at org.hibernate.cfg.Configuration.configure(Configuration.java:2075) at com.theitroad.hibernate.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:16) at com.theitroad.hibernate.util.HibernateUtil.getSessionFactory(HibernateUtil.java:34) at com.theitroad.hibernate.main.HQLExamples.main(HQLExamples.java:20) Caused by: org.dom4j.DocumentException: hibernate.org Nested exception: hibernate.org at org.dom4j.io.SAXReader.read(SAXReader.java:484) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2155) ... 4 more Exception in thread "main" java.lang.ExceptionInInitializerError at com.theitroad.hibernate.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:29) at com.theitroad.hibernate.util.HibernateUtil.getSessionFactory(HibernateUtil.java:34) at com.theitroad.hibernate.main.HQLExamples.main(HQLExamples.java:20) Caused by: org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2163) at org.hibernate.cfg.Configuration.configure(Configuration.java:2075) at com.theitroad.hibernate.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:16) ... 2 more Caused by: org.dom4j.DocumentException: hibernate.org Nested exception: hibernate.org at org.dom4j.io.SAXReader.read(SAXReader.java:484) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2155) ... 4 more
org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml
从上面的异常堆栈跟踪来看,Hibernate似乎正在尝试加载DTD文件以验证hibernate.cfg.xml文件,但由于没有互联网连接,它失败了。
我使用Hibernate Tools生成我的hibernate配置和映射文件。
我的hibernate.cfg.xml文件具有以下DTD DocType定义。
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "https://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
理想情况下,这应该不是问题,因为休眠罐子中存在DTD文件,并且应该从那里加载它。
但这没有发生。
花了一些时间寻求在线帮助后,我能够找到两种方法来解决此问题。
- 休眠配置文件位置第一个解决方案是使用类路径在系统中提供DTD文件位置。
因此,可以脱机工作的DocType将是; - 将SourceForge DTD URL与SYSTEM一起使用另一种解决方案是我将DTD URL更改为SourceForge并将声明从PUBLIC更改为SYSTEM,因此如果您的系统离线,下面的方法也可以使用。
这似乎很奇怪,因为理想情况下它应该适用于hibernate.org的DTD URL,因为Hibernate 4始终会发出以下警告。