JAXB

2015-01-28 12 views
6

के साथ LocalDateTime का उपयोग करके मैं LocalDateTime प्रकार के फ़ील्ड के साथ JAXB का उपयोग करने का प्रयास कर रहा हूं।JAXB

public class LocalDateTimeXmlAdapter extends XmlAdapter<String, LocalDateTime> { 
    @Override 
    public String marshal(LocalDateTime arg0) throws Exception { 
     return arg0.toString(); 
    } 

    @Override 
    public LocalDateTime unmarshal(String arg) throws Exception { 
     return LocalDateTime.parse(arg); 
    } 
} 

मैं बहुत तरह package-info.java में अनुकूलक पंजीकृत:

@XmlJavaTypeAdapters({ 
     @XmlJavaTypeAdapter(type=LocalDateTime.class, value=LocalDateTimeXmlAdapter.class) 
}) 
package xml; 

import java.time.LocalDateTime; 

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; 

यह this page के अनुसार पर्याप्त प्रतीत हो रहा है मैं रूपांतरण को संभालने के लिए एक एडाप्टर लिखा था। हालांकि, मैं निम्नलिखित त्रुटि प्राप्त हो रही:

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions 
java.time.LocalDateTime does not have a no-arg default constructor. 

मैं समझता हूँ कि अपवाद के लिए कारण फेंके, लेकिन मैं शायद ही java.time.LocalDateTime करने के लिए डिफ़ॉल्ट निर्माता जोड़ सकते हैं। यह वर्ग/एक अजीब डिजाइन निर्णय की कमी है। क्या कोई कामकाज है?

उत्तर

2

आपको क्या करना चाहिए। निम्नलिखित में से एक गलत हो सकता है:

  1. जब से तुम पैकेज स्तर यह केवल xml बुलाया अपने पैकेज में कक्षाओं पर गुण के लिए लागू होगी पर @XmlJavaTypeAdapter निर्दिष्ट किया है। क्या आपके मॉडल में एक अलग पैकेज से एक वर्ग है जिसमें LocalDateTime टाइप की मैप की गई संपत्ति है?
  2. यह भी संभव है कि आपकी package-info.java फ़ाइल संकलित नहीं की जा रही है। IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions:
1

समान व्यवहार था।

मेरा पीबीएम था: मेरे पास कई पैकेज हैं (तीन) जहां package-info.java फ़ाइल की आवश्यकता है, जैसे following picture में दिखाया गया है।

मैंने तीनों निर्देशिकाओं में से प्रत्येक में package-info.java जोड़कर इस पीबीएम को "हल" किया। पैकेज fr.gouv.agriculture.dal.ct.planCharge.metier.dao.charge.xml के लिए उदाहरण:

@XmlJavaTypeAdapter(type = LocalDate.class, value = LocalDateXmlAdapter.class) 
package fr.gouv.agriculture.dal.ct.planCharge.metier.dao.charge.xml; 

कोई कॉपी/पेस्ट कई package-info.java फाइलों में, अग्रिम धन्यवाद की तुलना में एक बेहतर विचार है।

 संबंधित मुद्दे