两个类具有相同的XML类型名称。使用@ XmlType.name和@ XmlType.namespace为它们分配不同的名称

时间:2019-05-03 10:57:19

标签: xml xsd jaxb java-11 xjc

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

当我也尝试初始化JAXBContext时,我得到: 两个类具有相同的XML类型名称“ picture”。使用@ 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为它们分配不同的名称 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

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