Вам всегда нужен класс ObjectFactory при использовании JAXB?

Вам всегда нужен класс ObjectFactory при использовании JAXB?

Без этого я получаю это исключение:

javax.xml.bind.JAXBException: "com.abc" не содержит ObjectFactory.class или jaxb.index

Я считаю, что ObjectFactory может быть излишним. Но, учитывая это исключение, я предполагаю, что оно тебе нужно... но не уверен, зачем?

2 ответа

Решение

Вы получаете это исключение при использовании JAXBContext.newInstance(String) фабричный метод, где вы передаете имя пакета в качестве аргумента. Это требует ObjectFactory чтобы быть там, в противном случае JAXB не знает, какие классы обрабатывать.

Если у вас нет ObjectFactory, вам нужно JAXBContext.newInstance(Class...) вместо этого, передав явный список аннотированных классов для добавления в контекст.

Вместо ObjectFactory вы можете включить файл jaxb.index, который является текстовым файлом, который содержит разделенный новой строкой список классов Java.

Пример использования файла jaxb.index смотрите:

Я использовал Spring, и мне просто нужно было изменить

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

в

Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setPackagesToScan("","");
Другие вопросы по тегам