我通过注释现有的 Java 域模型类创建了一个 XML 模式,现在当我尝试使用 JAXB 来解组在我的 restlet Web 服务中收到的表示时,无论我尝试什么,我都会遇到很多错误。我对restlets和JAXB都是新手,所以向我指出一个使用两者的体面示例的方向会很有帮助,只有我迄今为止设法找到的一个是:示例
我的错误是:
如果我尝试使用 restlet.ext.jaxb JaxbRepresentation:
@Override
public void acceptRepresentation(Representation representation)
throws ResourceException {
JaxbRepresentation<Order> jaxbRep = new JaxbRepresentation<Order>(representation, Order.class);
jaxbRep.setContextPath("com.package.service.domain");
Order order = null;
try {
order = jaxbRep.getObject();
}catch (IOException e) {
...
}
从这里我得到一个
java.io.IOException: Unable to unmarshal the XML representation.Unable to locate unmarshaller.
例外jaxbRep.getObject()
因此,我还尝试了另一种方法来查看是否有所不同,而是使用以下代码:
@Override
public void acceptRepresentation(Representation representation)
throws ResourceException {
try{
JAXBContext context = JAXBContext.newInstance(Order.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Order order = (Order) unmarshaller.unmarshal(representation.getStream());
} catch( UnmarshalException ue ) {
...
} catch( JAXBException je ) {
...
} catch( IOException ioe ) {
...
}
但是,当调用 JAXBContext.newInstance 时,这也会给我以下异常。
java.lang.NoClassDefFoundError: javax/xml/bind/annotation/AccessorOrder
提前感谢您的任何建议。