Сериализация JodaTime Period с помощью Jaxb (BasePeriod не имеет конструктора по умолчанию)

Я написал адаптер для обработки сериализации периода https://www.joda.org/joda-time/apidocs/org/joda/time/Period.html в JodaTime с JAXB, как указано в http://blog.bdoughan.com./2011/05/jaxb-and-joda-time-dates-and-times.html, но это не работает.

public class PeriodAdapter extends XmlAdapter<String, Period>{

@Override
public Period unmarshal(String p) throws Exception {
    return new Period(p);
}

@Override
public String marshal(Period p) throws Exception {
    return p.toString();
}

}

а затем в моем классе, где мне нужно использовать адаптер, я использую аннотацию

public class ActiveHistorySettings {

private Period maximumPeriod;

@Min(0)
private int maximumAccesses;

@XmlJavaTypeAdapter(PeriodAdapter.class)
public Period getMaximumPeriod() {
    return this.maximumPeriod;
}

Если я отлаживаю приложение, адаптер не используется, прежде чем пытаться разобрать мой xml...

это трассировка стека

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of 
IllegalAnnotationExceptions
org.joda.time.base.BasePeriod does not have a no-arg default constructor.
this problem is related to the following location:
at org.joda.time.base.BasePeriod
at org.joda.time.Period

person Alex M    schedule 10.10.2011    source источник


Ответы (1)


Проблема устранена. У меня возникла проблема с моим путем сборки в eclipse. На самом деле я не использовал библиотеку JAXB. Сейчас я использую jaxb 2.2.4 http://jaxb.java.net/, и когда я отлаживаю применение моего адаптера было использовано :D

person Alex M    schedule 11.10.2011