包级别的 XmlJavaTypeAdapter 不起作用



我的package-info.java中有以下内容:

@XmlJavaTypeAdapters({
    @XmlJavaTypeAdapter(type=OffsetDateTime.class, value=OffsetDateTimeAdapter.class)
})
package java.time;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;

以及以下作为适配器:

package java.time;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class OffsetDateTimeAdapter extends XmlAdapter<String, OffsetDateTime> {
    @Override
    public OffsetDateTime unmarshal(String v) throws Exception {
        return OffsetDateTime.parse(v);
    }
    @Override
    public String marshal(OffsetDateTime v) throws Exception {
        return v.toString();
    }
}

但是当我执行以下操作时:

    JAXBContext jc = JAXBContext.newInstance(Root.class);
    Unmarshaller unmarshaller = jc.createUnmarshaller();
    JAXBElement<Root> rootElement = unmarshaller.unmarshal(node, Root.class);

我得到以下信息:

com.sun.xml.internal.bind.v2.ClassFactory create0 INFO: 在类 java.time.OffsetDateTime 上找不到默认构造函数

我的设置中是否缺少某些内容 - 它没有调用我的适配器?

java.time不是

应该这样做的包。注释必须引用用户空间中的包和类。

将包信息.java和偏移日期时间适配器放入根及其子包所在的包中。

最新更新