JAXB:上下文中无法识别JAXB生成的类

JAXB:上下文中无法识别JAXB生成的类,jaxb,Jaxb,我遇到了这个问题。有什么补救办法吗 以下是我的文件结构: 封装jaxb_conainer_类; 包装装载机(U类) java同时导入loader_类和jaxb_conainer_类 在loader_类中,调用 JAXBContext context=JAXBContext.newInstance(xxxx.class) 给我上面的碰撞 线程“main”com.sun.xml.internal.bind.v2.runtime.illegalannotations异常:2次IllegalAnnota

我遇到了这个问题。有什么补救办法吗

以下是我的文件结构:

封装jaxb_conainer_类; 包装装载机(U类)

java同时导入loader_类和jaxb_conainer_类

在loader_类中,调用 JAXBContext context=JAXBContext.newInstance(xxxx.class)

给我上面的碰撞

线程“main”com.sun.xml.internal.bind.v2.runtime.illegalannotations异常:2次IllegalAnnotationExceptions计数
对于元素{}默认值,没有带有@XmlElementDecl的ObjectFactory。

从XML模式生成类时,应在生成的包名上创建
JAXBContext
。这将确保正确拾取
ObjectFactory
和所有其他内容

jaxbcontextjc=JAXBContext.newInstance(“com.example.foo”);
如果有多个包,您可以使用
作为分隔符

jaxbcontextjc=JAXBContext.newInstance(“com.example.foo:org.example.bar”);

或者,您可以在用于引导
JAXBContext
的类中包含
ObjectFactory
类,但我的建议是使用包名。

但是,如果我单独编译jaxb\u conainer\u class loader\u类。那就好了,谢谢。它解决了一个问题,但又造成了另一个问题。代码现在看起来像JAXBContext context=JAXBContext.newInstance(“name”);Unmarshaller u=context.createUnmarshaller();MClass MClass=(MClass)u.unmarshal(文件);但我在线程“main”javax.xml.bind.UnmarshaleException中看到了这个错误异常:意外元素(uri:,local:“M.class”)。预期元素为(无)@user2167013-
name
生成的类的包名是什么?XML模式是否还包含名为
M.class
的全局元素?下面的示例可能会有所帮助:是的,“name”是确切的包名,在我的例子中实际上是“jaxb_conainer_类”。是的,xml文件有一些类似于它出现在第一行的内容。另一件有趣的事情是,如果我单独编译上面的包,一切都会正常工作。按照上面的例子,如果我使用“javac axb_conainer_class;javac Main.java”,一切都可以正常工作。但是,如果我删除了所有的.class文件并只执行“javac Main.java”,那么我就得到了error.BTW,您上面提供的示例。这一行并不编译JAXBElement feed=unmarshaller.unmarshal(新的StreamSource(xml),FeedType.class);以下是错误:类型解组器中的方法解组器(节点,类)不适用于参数(StreamSource,类)