【问题标题】:SaxParser errors with Hibernate and JBoss - conflicting versions?Hibernate 和 JBoss 的 SaxParser 错误 - 版本冲突?
【发布时间】:2010-08-05 09:44:49
【问题描述】:

我正在使用 JBOSS 5.1.0.GA 和 Hibernate

当我尝试连接到数据库时,出现以下错误

10:21:03,042 INFO  [Version] Hibernate Commons Annotations 3.1.0.GA
10:21:03,049 INFO  [Configuration] configuring from resource: /hibernate.cfg.xml
10:21:03,049 INFO  [Configuration] Configuration resource: /hibernate.cfg.xml
10:21:03,077 INFO  [STDOUT] Warning: Caught exception attempting to use SAX to load a SAX XMLReader 
10:21:03,077 INFO  [STDOUT] Warning: Exception was: java.lang.ClassCastException: org.apache.xerces.parsers.SAXParser cannot be cast to org.xml.sax.XMLReader
10:21:03,077 INFO  [STDOUT] Warning: I will print the stack trace then carry on using the default SAX parser
10:21:03,077 ERROR [STDERR] java.lang.ClassCastException: org.apache.xerces.parsers.SAXParser cannot be cast to org.xml.sax.XMLReader
10:21:03,078 ERROR [STDERR]     at org.xml.sax.helpers.XMLReaderFactory.loadClass(Unknown Source)
10:21:03,078 ERROR [STDERR]     at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(Unknown Source)
10:21:03,078 ERROR [STDERR]     at org.dom4j.io.SAXHelper.createXMLReader(SAXHelper.java:83)
10:21:03,078 ERROR [STDERR]     at org.dom4j.io.SAXReader.createXMLReader(SAXReader.java:894)
10:21:03,078 ERROR [STDERR]     at org.dom4j.io.SAXReader.getXMLReader(SAXReader.java:715)
10:21:03,078 ERROR [STDERR]     at org.dom4j.io.SAXReader.read(SAXReader.java:435)
10:21:03,078 ERROR [STDERR]     at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1518)

然后

10:21:03,386 INFO  [STDOUT] 10:21:03,382 ERROR [DatabaseManager] Error intialising Hibernate
org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1528)
    at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1035)
    at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1462)
    at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017)
    at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1448)


Caused by: org.dom4j.DocumentException: SAX2 driver class org.apache.xerces.parsers.SAXParser does not implement XMLReader Nested exception: SAX2 driver class org.apache.xerces.parsers.SAXParser does not implement XMLReader
    at org.dom4j.io.SAXReader.read(SAXReader.java:484)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1518)

我有以下依赖:-

hibernate-annotations 3.4.0.GA hibernate-commons-annotations 3.1.0.GA 休眠核心 3.3.0.SP1

我怀疑 jboss lib 中的 jar 和我的依赖项中的 jar 之间存在冲突。谁能建议它可能是什么?

【问题讨论】:

  • 你在你的应用中打包hibernate jars吗?如果是,为什么?
  • 我们有范围为“编译”的休眠依赖项。如果我删除依赖项,则 mvn clean install 失败(在 jaxb-schemagen:generate 上失败,每个数据模型类都显示“类不存在”消息)
  • 如果您使用provided 范围怎么办?
  • 也试过了:-(它不会编译。原因和以前一样。

标签: hibernate jboss5.x saxparser


【解决方案1】:

我在 JBoss 5.0.1 中尝试运行 Hibernate 4.0.0.CR6 时遇到了同样的错误。

Hibernate 解析配置文件所需的解析器似乎是由 jboss 认可的库提供的(我相信 /lib/endorsed/xercesImpl.jar),并且 hibernate 的 xml-apis 依赖项以某种方式干扰了它们。

未在生成的存档(在我的情况下为 .war)中打包 xml-apis .jar 最终解决了该问题。 为此,我在生成存档的项目的 .pom 中覆盖了依赖项的范围(覆盖其他任何地方都行不通,因为 provided 范围不具有传递性):

<dependency>
  <groupId>xml-apis</groupId>
  <artifactId>xml-apis</artifactId>
  <version>1.0.b2</version>
  <scope>provided</scope>
</dependency>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    相关资源
    最近更新 更多