2016-03-16 2 views
1

При использовании JAXB в JBoss, я получаю ниже исключение при выполнении кода:JAXB com.sun.xml.internal.bind.v2.ContextFactory Класс не найден в JBoss AS 7

JAXBContext jaxbContext = JAXBContext.newInstance(jaxbElement.getClass().getPackage().getName()); 

Exception, который я я получаю:

[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory from [Module "deployment.project.ear.subproject-jboss.jar:main" from Service Module Loader]] 
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:156) [jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-3.jar:1.0.4.Final-redhat-3] 
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:108) [jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-3.jar:1.0.4.Final-redhat-3] 
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:258) [jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-3.jar:1.0.4.Final-redhat-3] 
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:412) [jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-3.jar:1.0.4.Final-redhat-3] 
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:375) [jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-3.jar:1.0.4.Final-redhat-3] 
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:279) [jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-3.jar:1.0.4.Final-redhat-3] 

похоже, модуль JBoss JAXB загружается вместо JDK, и это является причиной исключения, однако я не знаю, как решить эту ошибку?

+0

JBoss использует собственный модуль JAXB, возможно, потому, что вы не упаковываете банки JAXB в свое приложение. Как вы упаковываете свое приложение? – aribeiro

+0

У меня есть jaxrpc.jar в пути класса, и я думаю, что этого достаточно. Я прав? – Gaurav

+0

В вашем классе-пути вы должны иметь * jaxb-api * и * jaxb-impl * зависимости. Как вы упаковываете свое приложение? Используете ли вы какой-либо строительный инструмент, например, Maven? – aribeiro

ответ

0

Наконец-то я решил это, изменив фабрику контекстного меню по умолчанию, чтобы затмить фабрику контекстной ссылки, но не уверен, почему она не работает с дефолтным.

JAXBContext jaxbContext = JAXBContextFactory.createContext( clss.getPackage().getName() , clss.getClass().getClassLoader()); 

и путем импорта org.eclipse.persistence.jaxb.JAXBContextFactory класс.

Смежные вопросы