使用JAXB时是否总是需要ObjectFactory类?

时间:2010-04-19 13:27:44

标签: java jaxb

使用JAXB时是否总是需要ObjectFactory类?

没有它,我得到了这个例外:

  

javax.xml.bind.JAXBException:   “com.a.b.c”   不包含ObjectFactory.class或   jaxb.in​​dex

gather ObjectFactory可能有点过分。但鉴于这个例外,我猜你需要它......但不确定为什么?

3 个答案:

答案 0 :(得分:22)

使用JAXBContext.newInstance(String)工厂方法时会出现该异常,其中传递包名称作为参数。 需要ObjectFactory,否则,JAXB不知道要处理哪些类。

如果您没有ObjectFactory,则需要JAXBContext.newInstance(Class...),而是传入带注释的类的显式列表以添加到上下文中。

答案 1 :(得分:11)

您可以包含一个jaxb.in​​dex文件,而不是ObjectFactory,该文件是一个包含新行分隔的Java类列表的文本文件。

有关使用jaxb.in​​dex文件的示例,请参阅:

答案 2 :(得分:0)

我使用的是 Spring ,我只需要更改

Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setContextPaths("","");

Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setPackagesToScan("","");