2009-05-22 20 views
26

मैं एक JAXBContextJAXBContext.newInstance(String contextPath) का उपयोग कर बनाने का प्रयास करनेमैं jaxb.index फ़ाइल का उपयोग कैसे करूं?

javax.xml.bind.JAXBException: "org.example.mypackage" doesnt contain ObjectFactory.class or jaxb.index 

हो रही है। मुझे लगता है कि jaxb.index फ़ाइल बनाने और बनाए रखने के लिए "सामान्य" तरीका है।

उत्तर

4

सुनिश्चित करें कि आप विधि में सही कक्षा उत्तीर्ण कर रहे हैं।

JAXBContext context = JAXBContext.newInstance(XMLRoot.class); 

भी सुनिश्चित करें कि आप जावा के संस्करण आप चला रहे हैं के लिए JAXB संकलक (xjc) का सही संस्करण उपयोग कर रहे हैं: अपने XML मूल तत्व मान लिया जाये कि XMLRoot, आप इसे के रूप में कहेंगे है। पुराने कंपाइलर से जेएक्सबी-जेनरेटेड क्लासेस जावा 6 के जेएक्सबी के साथ ठीक से काम नहीं करेंगे, वही त्रुटि दे रहे हैं।

+0

@Andrew Coleson - होगा तुम वहाँ में packagae नाम रखना चाहते हैं नहीं, नहीं मूल तत्व टैग नाम? – volvox

14

इस तरह की कोशिश करो,

JAXBContext context = JAXBContext.newInstance(new Class[] {your.package.Test.class}); 
इसके अलावा

, सुनिश्चित करें कि आप टेस्ट वर्ग के लिए @XmlRootElement जोड़ा बनाते हैं।

@XmlRootElement 
class Test { 
    private String ...; 
    private int ......; 
} 

भी सुनिश्चित करें कि आप जावा 1.5

35

उपयोग कर रहे हैं jaxb.index फ़ाइल सिर्फ युक्त पैकेज में श्रेणियां होती हैं कि JAXB एनोटेशन की एक सूची है या नहीं।

फ़ाइल में प्रत्येक पंक्ति एक वर्ग का सरल नाम है, न कि इसका पूर्ण योग्य नाम।

आप यहाँ और अधिक पढ़ सकते हैं: http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html

+0

वर्गीकृत करके, क्या आपका मतलब पूर्णतः योग्य वर्ग का नाम है? 'फू' कक्षा का नाम होगा और 'com.a.b.c.Foo' पूरी तरह योग्य वर्ग का नाम होगा। – Dojo

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