我们的项目使用 Hibernate 的程序Configuration
来设置我们的 SessionFactory 等。我刚刚将我们从 Hibernate 的第 3 版迁移到第 4 版。现在我收到错误“必须声明元素类型“休眠映射”。” 它说是 SaxParseException。这很好,但是我检查了我的 WEB-INF/lib 目录并且 Hibernate 的版本 4 核心 .jar 文件在那里,所以它在类路径上。
起初我以为是因为 Hibernate 团队从
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
至
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
但这并不能解决错误。到底是怎么回事?在一个单独的项目中,我为 Hibernate 使用 XML 配置文件,我进行了相同的迁移,并且一切顺利。请注意,在我的环境中必须使用类路径,不能从 Internet 或类似的地方下载 DTD。无论如何都不应该。
编辑:这是要求的例外:
Caused by: org.xml.sax.SAXParseException; systemId: ; lineNumber: 6; columnNumber: 20; Element type "hibernate-mapping" must be declared.
at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1213)
at org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLError(XMLValidator.java:1807)
at org.apache.xerces.validators.common.XMLValidator.validateElementAndAttributes(XMLValidator.java:3633)
at org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1229)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:938)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)