我正在使用JDK 11,OSGI 3.13.0.v20180409-1500和jaxb- [core,impl,api]-2.3.0
我在osgi启动过程中看到以下错误
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:2个IllegalAnnotationExceptions |两个类具有相同的XML类型名称“ objectFactory”。使用@ XmlType.name和@ XmlType.namespace为其分配不同的名称。|?此问题与以下位置有关:| ?? com.xxx.xxx.xxx.inference.ObjectFactory |?此问题与以下位置有关以下位置:| ?? com.xxx.xxx.types.ObjectFactory |处的两个类具有相同的XML类型名称“ objectFactory”。使用@ XmlType.name和@ XmlType.namespace为其分配不同的名称。|?此问题与以下位置有关:| ?? com.xxx.xxx.types.ObjectFactory |?此问题与以下有关位置:| ?? com.xxx.xxx.xxx.message.ObjectFactory | 在com.sun.xml.bind.v2.runtime.IllegalAnnotationsException $ Builder.check(IllegalAnnotationsException.java:106) 在com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:471) 在com.sun.xml.bind.v2.runtime.JAXBContextImpl。(JAXBContextImpl.java:303) 在com.sun.xml.bind.v2.runtime.JAXBContextImpl。(JAXBContextImpl.java:139) 在com.sun.xml.bind.v2.runtime.JAXBContextImpl $ JAXBContextBuilder.build(JAXBContextImpl.java:1156) 在com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:165) 在com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:289) 在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.base / java.lang.reflect.Method.invoke(Method.java:566) 在javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:217) 在javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:175) 在javax.xml.bind.ContextFinder.find(ContextFinder.java:353) 在javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:508) 在javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:465)
添加@ XmlType.name和@ XmlType.namespace没有帮助
经过更多调试后,似乎在“ com.sun.xml.bind.v2.model.impl.ModelBuilder.java”(jaxb-impl)中,getClassAnnotation返回null
/ ** *此方法用于向模型添加根引用。 * / 公共NonElement getTypeInfo(Ref ref){ // TODO:处理XmlValueList 断言!ref.valueList; C c = nav.asDecl(ref.type); if(c!= null && reader.getClassAnnotation(XmlRegistry.class,c,null / TODO:对吗? /)!= null){ if(!registries.containsKey(nav.getPackageName(c))) addRegistry(c,null); 返回null; // TODO:这是正确的吗? }其他 返回getTypeInfo(ref.type,null); }
您能帮我解决这个问题吗?让我知道您是否需要更多详细信息