मुझे जेएक्सबी एक एक्सएमएल स्कीमा के लिए बाध्य कक्षाएं उत्पन्न करने के तरीके के साथ एक समस्या है (जो, परिशुद्धता के लिए, मैं संशोधित नहीं कर सकता)। मैं एक XSD मैप करना चाहते हैं: एक Joda समय LOCALDATE वस्तु के लिए दिनांक प्रकार और, here, here और here पढ़ने, मैं निम्नलिखित DateAdapter श्रेणी का निर्माण:जेएक्सबी, कस्टम बाइंडिंग्स, एडाप्टर 1.क्लास और जोडा-टाइम
public class DateAdapter extends XmlAdapter<String,LocalDate> {
private static DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd");
public LocalDate unmarshal(String v) throws Exception {
return fmt.parseLocalDate(v);
}
public String marshal(LocalDate v) throws Exception {
return v.toString("yyyyMMdd");
}
}
और मैं अपने वैश्विक बाध्यकारी फ़ाइल में निम्न जोड़ा :
[ERROR] \My\Path\MyProject\target\generated-sources\xjc\my\classes\generated\Adapter1.java:[20,59] non-static method unmarshal(java.lang.String) cannot be referenced from a static context
[ERROR] \My\Path\MyProject\target\generated-sources\xjc\my\classes\generated\Adapter1.java:[24,59] non-static method marshal(org.joda.time.LocalDate) cannot be referenced from a static context
:
<jaxb:globalBindings>
<jaxb:javaType name="org.joda.time.LocalDate" xmlType="xs:date"
parseMethod="my.classes.adapters.DateAdapter.unmarshal"
printMethod="my.classes.adapters.DateAdapter.marshal" />
</jaxb:globalBindings>
समस्या यह है कि, जब मैं अपने प्रोजेक्ट को संकलित maven करने की कोशिश, यह निम्न त्रुटि के साथ विफल है
... और यह वह जगह है जहां चीजें अजीब होती हैं।
public class Adapter1
extends XmlAdapter<String, LocalDate>
{
public LocalDate unmarshal(String value) {
return (my.classes.adapters.DateAdapter.unmarshal(value));
}
public String marshal(LocalDate value) {
return (my.classes.adapters.DateAdapter.marshal(value));
}
}
.... जो संकलन त्रुटि का स्रोत है: JAXB एक वर्ग Adapter1 है जिसमें निम्न शामिल उत्पन्न करता है।
अब, मेरे सवाल कर रहे हैं:
- जा रहा है कि मेरी एडाप्टर XmlAdapter अधिभावी है, मैं तरीकों स्थिर नहीं कर सकते हैं .... मैं यह कैसे से बचने के हैं?
- क्या मैं एडाप्टर 1.class की पीढ़ी से पूरी तरह से बच सकता हूं ?? हो सकता है कि पैकेज-स्तरीय एनोटेशन XmlJavaTypeAdapters का उपयोग कर, और यदि हां, तो मैं इसे बिल्कुल कैसे कर सकता हूं ?? (जेएक्सबी पहले से ही एक पैकेज-info.java उत्पन्न करता है ....)
आशा है कि मैंने अपनी स्थिति स्पष्ट कर दी है।
धन्यवाद
देखते हैं? मेरी एनोटेशन ओवरराइट हो जाएगी। –