无法解析hibernate.cfg.xml

时间:2017-11-29 14:06:33

标签: java xml hibernate

我无法解析hibernate.cfg.xml和geting

hashed_pw='your-sercret-hash-S0SKVKUuFfUfrY3UhhUC3J'
passwd = hudson.util.Secret.decrypt(hashed_pw)
println(passwd)

它可以是xml解析器,它接口就像它使用stax引擎盖。我们正在休眠5.2.3。我们的hibernate.cfg.xml文件的标题是正确的我尝试了两个Xsd

Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.hibernate.org/xsd/orm/cfg", local:"hibernate-configuration"). Expected elements are <{}hibernate-configuration>

和DTD

   <?xml version="1.0" encoding='utf-8'?>
<hibernate-configuration
    xsi:schemaLocation="http://www.hibernate.org/xsd/hibernate-configuration hibernate-configuration-4.0.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <session-factory>

两者都有相同的错误。我必须与解析器有关。

更新 我已修复问题代码未正确显示。我确信XML是有效的XML。

更新2 我开始得到一些线索。它可以通过运行代码作为junit powermock测试来引起。特别是 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> 类读取文件,由MockClassLoader加载。

更新3 他们通过稍微驯服powermock来解决它here

com.sun.xml.internal.stream.XMLEventReaderImpl

现在我有不同的错误希望我走在正确的轨道上。

@PowerMockIgnore({ "javax.xml.*", "org.xml.sax.*" })

通过向

添加其他类来解决问题here
java.lang.LinkageError: loader constraint violation: when resolving overridden method "com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Lorg/w3c/dom/Node;)Ljava/lang/Object;" the class loader (instance of org/powermock/core/classloader/MockClassLoader) of the current class, com/sun/xml/internal/bind/v2/runtime/unmarshaller/UnmarshallerImpl, and its superclass loader (instance of <bootloader>), have different Class objects for the type org/w3c/dom/Node used in the signature

2 个答案:

答案 0 :(得分:0)

您可以尝试将此模板更改并用于hibernate.cfg.xml文件:

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

<hibernate-configuration>
 <session-factory name="domain">

  <property name="hibernate.show_sql">false</property>
  <mapping package="com.example.dao.entity"/>

  <!-- etc -->

 </session-factory>
</hibernate-configuration>

答案 1 :(得分:0)

此错误是在 Hibernate 5.4.4 中使用 java version "14.0.1" 时引发的。

<块引用>

意外元素(uri:“http://www.hibernate.org/xsd/orm/cfg”,本地:“hibernate-configuration”)。预期元素为 <{}hibernate-configuration>

一个简单的降级到 java 8 解决它。

documentation 中提到的 Hibernate 最高 5.4.4。支持 Java 811