2016-03-09 3 views
0

У меня есть следующие в моей package-info.java:XmlJavaTypeAdapter на уровне пакета не работает

@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

Вы пытались добавить пустой конструктор в класс OffsetDateTime? –

+0

@ReneM. - OffsetDateTime - это класс JDK: https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html – Cheetah

+0

Извините, моя вина. –

ответ

0

java.time не является пакетом, где это должно быть. Аннотации должны относиться к пакетам и классам в пользовательском пространстве.

Поместите package-info.java и OffsetDateTimeAdapter в пакет, в котором находится корень и его дети.

Смежные вопросы