gpt4 book ai didi

java - 包级别的 XmlJavaTypeAdapter 不起作用

转载 作者:行者123 更新时间:2023-11-30 07:32:28 26 4
gpt4 key购买 nike

我的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: No default constructor found on class java.time.OffsetDateTime

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

最佳答案

java.time 不是它应该在的包。注解必须引用用户空间中的包和类。

将 package-info.java 和 OffsetDateTimeAdapter 放入 Root 及其子级所在的包中。

关于java - 包级别的 XmlJavaTypeAdapter 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com