是否可以显式地将 jaxb 指向其存根

问题描述 投票:0回答:1

我已经为实现 xacml 规范模型的 Web 服务生成了类,并具有以下包: oasis.names.tc.xacml._3_0.core.schema.wd_17(不是 jaxb)。

我还有一个外部库,其中 jaxb-stabs 位于同一路径 - oasis.names.tc.xacml._3_0.core.schema.wd_17。 jaxb 存根用于与 pdp 引擎策略配合使用。

当我调用 pdp 库时,我收到错误:

javax.xml.bind.JAXBException:提供程序 com.sun.xml.bind.v2.ContextFactory 无法实例化:com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:4 个 IllegalAnnotationException 计数 两个类具有相同的 XML 类型名称“{urn:oasis:names:tc:xacml:3.0:core:schema:wd-17}anonimous”。使用@XmlType.name 和@XmlType.namespace 为它们分配不同的名称。 该问题与以下位置有关: 在 oasis.names.tc.xacml._3_0.core.schema.wd_17.DefaultsType$Anonimous 在公共 oasis.names.tc.xacml._3_0.core.schema.wd_17.DefaultsType$Anonimous oasis.names.tc.xacml._3_0.core.schema.wd_17.DefaultsType.getAnonimous() 在 oasis.names.tc.xacml._3_0.core.schema.wd_17.DefaultsType 在公共 oasis.names.tc.xacml._3_0.core.schema.wd_17.DefaultsType oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory.createDefaultsType() ...

有没有办法在不重命名包路径的情况下避免这样的问题?

java jaxb authzforce
1个回答
0
投票

我尝试在创建 JAXBContext、索引时显式列出所有必需的类,将 jaxb-stabs 放入需要它们的同一个库中,等等。之后,我编写了自己的类加载器,其中仅重新定义了库需要的内容并启动引擎库,因此 jaxb 仍然会找到一个不是 XMLType 的重复项,因为它加载早于我的服务。

工作解决方案结果是对两个包都使用单刺或重命名其中一个包,这样就不会发生冲突

© www.soinside.com 2019 - 2024. All rights reserved.