Вам всегда нужен класс ObjectFactory при использовании JAXB?
Вам всегда нужен класс ObjectFactory при использовании JAXB?
Без этого я получаю это исключение:
javax.xml.bind.JAXBException: "Com.a.b.c" не содержит ObjectFactory.class или jaxb.index
I собирать, ObjectFactory может быть излишним. Но, учитывая это исключение, я предполагаю, что вам это нужно... но не знаете почему?
Ответы
Ответ 1
Вы получаете это исключение, когда используете метод JAXBContext.newInstance(String)
factory, в котором вы передаете имя пакета в качестве аргумента. Для этого требуется ObjectFactory
, иначе JAXB не знает, какие классы обрабатывать.
Если у вас нет ObjectFactory
, вам нужно JAXBContext.newInstance(Class...)
вместо этого передать в явный список аннотированных классов для добавления в контекст.
Ответ 2
Вместо ObjectFactory вы можете включить файл jaxb.index, который является текстовым файлом, который содержит новый список разделенных Java-классов.
Пример использования файла jaxb.index:
Ответ 3
Я использовал Spring, и мне просто нужно было изменить
Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setContextPaths("","");
в
Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setPackagesToScan("","");