我的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上找不到默认构造函数
我的设置中是否缺少某些内容 - 它没有调用我的适配器?
答案 0 :(得分:0)
java.time
不是应该包含的包。注释必须引用用户空间中的包和类。
将package-info.java和OffsetDateTimeAdapter放入Root及其子项所在的包中。