Ошибка привязки Mule JaxB - "пакет" не содержит ObjectFactory.class или jaxb.index
Я использую мула с Maven. Я использовал xml для преобразования объектов. Мои файлы моделей снабжены аннотациями jaxb. Ссылочный контекст JAXB выглядит так:
mulexml:jaxb-context name="JAXB_Context" packageNames="com.xml.model" doc:name="JAXB Context"/>
Я создал файл jaxb.index с именами аннотированных классов JAXB и поместил их в папку com.xml.model.
Но все же это показывает следующее исключение -:
org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем '_muleNotificationManager': FactoryBean вызвала исключение при создании объекта; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'JAXB_Context': сбой вызова метода init; Вложенное исключение - javax.xml.bind.JAXBException: не удалось создать поставщик com.sun.xml.bind.v2.ContextFactory: javax.xml.bind.JAXBException: "com.xml.model" не содержит ObjectFactory.class или jaxb.index - со связанным исключением: [javax.xml.bind.JAXBException: "com.xml.model" не содержит ObjectFactory.class или jaxb.index]
Это сработало для проекта мул без Maven.
3 ответа
Я нашел решение для этого. Нам нужно сохранить jaxb.index
файл в resources
папка с той же структурой пакета.
Я думаю, что при использовании Maven он не выбирает файл из пакета. Он использует свои собственные методы сборки, но при использовании без Maven сборка выполняется с помощью собственных методов сборки Anypoint studio, и поэтому он получает файл jaxb.
Arup, вы можете проверить, существует ли zip-файл или jar-файл, содержащий пакет /classes com.xml.model.*. Это означает, что проект не смог увидеть те в сгенерированном сжатом файле maven.
Вот как я получил его для работы с jaxb.index
Скажем, все ваши классы сортировки, такие как Order, Customer, Merchant, находятся в пакете com.common.beans
Ваш поток XML Jaxb-Context будет настроен, указывая на этот пакет:
Внутри пакета com.common.beans создайте файл jaxb.index с содержанием ваших классов сортировки следующим образом в каждой строке:
порядок
Покупатель
коммерсант
Ошибка должна уйти.
Наслаждайтесь!:)