我有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为它们分配不同的名称 有人可以帮忙吗?
答案 0 :(得分:0)
问题是jaxb运行时位于war文件中,作为另一个程序包的传递依赖项。 解决方案是将其排除在gradle文件中,并使所有jaxb依赖项都位于tomcat lib文件夹下。