【问题标题】:Two classes have the same XML type name.Use @XmlType.name and @XmlType.namespace to assign different names to them两个类具有相同的 XML 类型名称。使用 @XmlType.name 和 @XmlType.namespace 为它们分配不同的名称
【发布时间】:2019-05-03 10:57:19
【问题描述】:

我有 2 个具有相同名称的 .xsd 格式的类。 即使它们中的每一个都在不同的命名空间下:

当我尝试初始化 JAXBContext 时,我得到: 两个类具有相同的 XML 类型名称“图片”。使用@XmlType.name 和@XmlType.namespace 为它们分配不同的名称。 信息:在 java 11 上运行并使用 xjc 生成类。 这以前在 java 8 上工作

<xs:schema targetNamespace="http://test.com/bla/blabla/blablabla/sd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="picture">






<xs:schema targetNamespace="http://test.com/bla/blabla/blablabla/hd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="picture">

两个生成的类都如下所示:

@XmlRootElement(name = "picutre") 公共类图片{}

我初始化 JAXBContext:

 private static JAXBContext initializeJaxbContext() {
    JAXBContext jaxbctx = JAXBContext.newInstance(com.test.bla.blabla.blablabla.hd.Picture.class,com.test.bla.blabla.blablabla.sd.Picture.class);

为什么会出现这个错误? 两个类具有相同的 XML 类型名称。使用 @XmlType.name 和 @XmlType.namespace 为它们分配不同的名称 有人可以帮忙吗?

【问题讨论】:

    标签: xml xsd jaxb java-11 xjc


    【解决方案1】:

    问题在于 jaxb 运行时位于 war 文件中,作为其他包的传递依赖项。 解决方案是在 gradle 文件中排除它,并将所有 jaxb 依赖项放在 tomcat lib 文件夹下。

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多