使用JAXB时是否总是需要ObjectFactory类?
没有它,我得到了这个例外:
javax.xml.bind.JAXBException: “com.a.b.c” 不包含ObjectFactory.class或 jaxb.index
我gather ObjectFactory可能有点过分。但鉴于这个例外,我猜你需要它......但不确定为什么?
答案 0 :(得分:22)
使用JAXBContext.newInstance(String)
工厂方法时会出现该异常,其中传递包名称作为参数。 需要ObjectFactory
,否则,JAXB不知道要处理哪些类。
如果您没有ObjectFactory
,则需要JAXBContext.newInstance(Class...)
,而是传入带注释的类的显式列表以添加到上下文中。
答案 1 :(得分:11)
您可以包含一个jaxb.index文件,而不是ObjectFactory,该文件是一个包含新行分隔的Java类列表的文本文件。
有关使用jaxb.index文件的示例,请参阅:
答案 2 :(得分:0)
我使用的是 Spring ,我只需要更改
Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setContextPaths("","");
到
Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setPackagesToScan("","");