Не удается заставить EclipseLink MOXy работать - PullRequest
6 голосов
/ 25 июля 2011

Я новичок в JAXB и хочу изменить префикс пространства имен по умолчанию, используя EclipseLink MOXy.Мой пакет-info.java имеет следующие строки кода:

@javax.xml.bind.annotation.XmlSchema (
namespace="http://namespace.mysite.com/",
xmlns = { 
    @javax.xml.bind.annotation.XmlNs(prefix="myns", 
               namespaceURI="http://namespace.mysite.com/")
},
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED
)
package com.core.mymodel;

А мой файл jaxb.properties имеет следующую строку:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

Я добавил eclipselink.jar в CLASSPATHи файлы package-info.java, и jaxb.properties находятся в том же пакете, что и мои классы моделей, однако при запуске программы появляется следующее сообщение об ошибке:

javax.xml.bind.JAXBException: Provider org.eclipse.persistence.jaxb.JAXBContextFactory        not found
- with linked exception:
[java.lang.ClassNotFoundException: org.eclipse.persistence.jaxb.JAXBContextFactory]
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)

Я пробовал это сEclipseLink версии 2.3.0 и 2.0.2 и все равно получили то же сообщение об ошибке.Кто-нибудь знает, в чем может быть проблема?

Большое спасибо заранее

1 Ответ

4 голосов
/ 25 июля 2011

Похоже, что ваш jaxb.properties файл правильный на основании сообщения об исключении:

javax.xml.bind.JAXBException: Provider org.eclipse.persistence.jaxb.JAXBContextFactory        not found
- with linked exception:
[java.lang.ClassNotFoundException: org.eclipse.persistence.jaxb.JAXBContextFactory]
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)

Чтобы подтвердить, что org.eclipse.persistence.jaxb.JAXBContextFactory находится на вашем пути к классам, вы можете попробовать:

JAXBContext jc = JAXBContextFactory.createContext("com.core.mymodel", null);

Чтобы сделать более простое подтверждение, вы можете запустить:

System.out.println(org.eclipse.persistence.Version.getVersion());

Для получения дополнительной информации

...