Java XML中的JAXBEException,但不是JSON

Java XML中的JAXBEException,但不是JSON,java,xml,json,jaxb,Java,Xml,Json,Jaxb,已解决-我必须将@xmlsee也添加到Aardvark类中,以便XML以RESTful方式显示(如下所示) 我试图以XML和JSON两种格式RESTfully显示以下内容。当我运行下面所示的测试用例时(在REST之外),它工作得很好。当我在浏览器中以JSON的形式RESTfully查看它时,它工作得很好。当我在浏览器中以XML的形式以RESTfull方式查看它时,会出现以下错误: "JAXBException occurred : class java.util.ArrayList nor an

已解决-我必须将@xmlsee也添加到Aardvark类中,以便XML以RESTful方式显示(如下所示)

我试图以XML和JSON两种格式RESTfully显示以下内容。当我运行下面所示的测试用例时(在REST之外),它工作得很好。当我在浏览器中以JSON的形式RESTfully查看它时,它工作得很好。当我在浏览器中以XML的形式以RESTfull方式查看它时,会出现以下错误:

"JAXBException occurred : class java.util.ArrayList nor any of its super class is known to this context.."
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594‌​) 
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648) 
... 74 more
我正在使用jackson 2.2.2。任何帮助都将不胜感激

public class Test {
    public static void main(String[] args){
        JAXBContext context = JAXBContext.newInstance(Banana.class)
        Banana b = context.createUnmarshaller().unmarshal("myXmlFile");  
        context.createMarshaller().marshal(b,System.err);

        context = JAXBContext.newInstance(BananaHolder.class)
        BananaHolder bh = context.createUnmarshaller().unmarshal("myOtherXmlFile");  
        context.createMarshaller().marshal(bh,System.err);
    }
}

@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
public class Banana {
    @XmlJavaTypeAdapter(MapOfAardvarkListsAdapter.class)
    private Map<String, List<Aardvark>> map;
}

public class MapOfAardvarkListsAdapter extends XmlAdapter<AardvarkListWrapper, Map<String, List<Aardvark>>> {
    public Map<String, List<Aardvark>> unmarshal(AardvarkListWrapper wrapper) {...}
    public AardvarkListWrapper  marshal(Map<String, List<Aardvark>> map) {...}
}

@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
public class AardvarkListWrapper  {
    @XmlElement
    private List<MapOfAardvarksEntry> list;
}

@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
public class MapOfAardvarksEntry {
    @XmlAttribute
    private String key;
    @XmlElement
    private List<Aardvark> value;
}   

@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
@XmlSeeAlso(ArrayList.class) // Needed to resolve hotdogs in XML
public class Aardvark {
    private Map<String,Object> hotdogs;
    ...
}

/// REST SIDE
@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
public class BananaHolder {
    public List<Banana> bananas;
}

public class TheRestClass {
    @GET
    @PATH("/")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public Response getAllBananas(){
        List<Banana> bananas = ...
        BananaHolder holder = new BananaHolder();
        holder.setBananas(bananas);
        return Response.ok(holder).build();
    }
}
公共类测试{
公共静态void main(字符串[]args){
JAXBContext context=JAXBContext.newInstance(Banana.class)
香蕉b=context.createUnmarshaller().unmarshal(“myXmlFile”);
context.createMarshaller().marshal(b,System.err);
context=JAXBContext.newInstance(BananaHolder.class)
BananaHolder bh=context.createUnmarshaller().unmarshal(“myOtherXmlFile”);
context.createMarshaller().marshal(bh,System.err);
}
}
@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
公共级香蕉{
@XmlJavaTypeAdapter(MapOfAardvarkListsAdapter.class)
私人地图;
}
ArdVarkListsAdapter的公共类映射扩展了XmlAdapter{
公共映射解组(AardvarkListWrapper){…}
公共AardvarkListWrapper封送员(映射映射){…}
}
@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
公共类AardvarkListWrapper{
@XmlElement
私人名单;
}
@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
ArdVarkEntry的公共类映射{
@XmlAttribute
私钥;
@XmlElement
私有列表值;
}   
@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
@XMLSEEALLO(ArrayList.class)//需要在XML中解析热狗
公营土豚{
私人地图热狗;
...
}
///休息区
@XmlRootElement
@XmlAccessorType(XMLAccessType.FIELD)
公共类银行持有人{
公开上市香蕉;
}
公共类{
@得到
@路径(“/”)
@产生({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
公众回应getAllBananas(){
列出香蕉=。。。
BananaHolder=新的BananaHolder();
(香蕉);
返回Response.ok(holder.build();
}
}

你能发布完整的堆栈跟踪吗?web日志有一个堆栈跟踪,但它没有指向我的代码。服务器日志中呢?此外,该异常不应该是
IllegalAnnotationException
,您是否将其视为一个异常?在com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594)在com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648)…Blaise,我之前通过了IllegaAnnotationException,在发布之前忘记了编辑标题。很抱歉。我修正了标题