JAXB将嵌套元素解组为空

toa*_*ead 8 java xml jaxb unmarshalling

XML片段:

<datasource formatted-name="blah" inline="blah">
    <repository-location derived-from="blah" id="blah" path="blah" revision="blah" site="blah"/>
</datasource>
Run Code Online (Sandbox Code Playgroud)

我试图用嵌套的静态类解组一个类(DataSource)下的所有东西.这是我的DataSource类:

@XmlRootElement(name = "datasource")
@XmlAccessorType(XmlAccessType.FIELD)
public class DataSource {

    @XmlAttribute(name = "formatted-name")
    protected String formattedName;
    @XmlAttribute(name = "inline")
    protected String inline;
    @XmlElement(name = "repository-location")
    protected RepositoryLocation repositoryLocation;

    // public getters and setters for fields above

    @XmlAccessorType(XmlAccessType.FIELD)
    public static class RepositoryLocation {

        @XmlAttribute(name = "derived-from")
        protected String derivedFrom;
        @XmlAttribute(name = "id")
        protected String id;
        @XmlAttribute(name = "path")
        protected String path;
        @XmlAttribute(name = "revision")
        protected String revision;
        @XmlAttribute(name = "site")
        protected String site;

        // public getters and setters for fields above
    }
}
Run Code Online (Sandbox Code Playgroud)

解组:

JAXBContext jaxbContext = JAXBContext.newInstance(DataSource.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(responseXML);
dataSourceResponse = (DataSource) unmarshaller.unmarshal(reader);
Run Code Online (Sandbox Code Playgroud)

我可以成功输出DataSource字段"formattedName"和"inline",但"repositoryLocation"为null.有人可以帮忙吗?

toa*_*ead 2

问题解决了!我注意到我的 java 1.7 库缺少一些 jar。所以我决定继续升级到1.8。它就像魔术一样起作用!