【问题标题】:Hibernate.cfg.xml parsing errorHibernate.cfg.xml 解析错误
【发布时间】:2014-08-21 10:34:10
【问题描述】:

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

我的 hibernate.cfg.xml 文件中有这个。我在 Eclipse 工作区的 WEB-INF 文件夹中下载了 jars(来自http://www.javatpoint.com/src/hb/hibernatejar.zip)。它仍然说 hibernate.sourceforge.net 无法访问。我用 www.hibernate.org/dtd 替换了它,这也给出了同样的错误。请帮我解决这个问题。

映射文件中也存在同样的问题。

在 DOCTYPE 中添加类路径后出错:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1491)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1425)
    at StoreData.main(StoreData.java:12)
Caused by: org.dom4j.DocumentException: unknown protocol: classpath Nested exception: unknown protocol: classpath
    at org.dom4j.io.SAXReader.read(SAXReader.java:484)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1481)
    ... 2 more

【问题讨论】:

  • 您的库是否存在于您的应用程序类路径中?
  • 我已将 jars 添加到 WEB-INF/lib 文件夹中。除此之外,我还在 java 构建路径中添加了它们。
  • 看看我的回答。

标签: hibernate hibernate.cfg.xml


【解决方案1】:

您的DOCTYPE 定义指的是位于hibernate.sourceforge.net 上的DTD。现在 DTD 存在(我可以通过 Firefox 浏览它)但您的应用程序无法访问它。 doctype 元素的目的是链接到 DTD。

下面试试

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"classpath://org/hibernate/hibernate-mapping-3.0.dtd">

【讨论】:

  • 我也试过这个。这意味着它将引用本地存在的 DTD。但是 DTD 只存在于我工作区的 hibernate3.jar 中。如何指向 jar 内的 DTD?
  • @naveenbharadwaj 哪个版本的休眠
  • 我不确定。我从一个网站下载了这些罐子。这些是我工作区中的一组罐子。 antlr-2.7.6.jar asm-attrs.jar asm.jar c3p0-0.9.1.jar cglib-2.1.3.jar commons-collections-2.1.1.jar commons-logging-1.0.4.jar dom4j-1.6 .1.jar ehcache-1.2.3.jar ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar hibernate-validator.jar hibernate3.jar jdbc2_0-stdext.jar jta.jar log4j-1.2.11。 jar ojdbc14.jar xerces-2.6.2.jar
  • 我将 DTD 提取到一个路径并在类路径中引用它。现在它给出了这个错误。引起:org.dom4j.DocumentException:未知协议:类路径嵌套异常:未知协议:org.dom4j.io.SAXReader.read(SAXReader.java:484) 处的类路径 org.hibernate.cfg.Configuration.doConfigure(Configuration. java:1481) ... 2 更多
【解决方案2】:

以下应该是您在 hibernate.cfg.xml 文件中的完整 DTD

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

也不要忘记在文件的开头跟随

<?xml version='1.0' encoding='utf-8'?> 

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2013-01-24
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多