I have jaxb objects against an XML schema. That xml schema can have different root element. Which is working perfectly fine in the main project. Based on those generated objects, I am trying to write some test cases.
I wrote following code to get JAXBContext
JAXBContext jaxbContext = JAXBContext.newInstance("com.store.web.ws.v1.model");
and i get following exception
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.lang.StackTraceElement does not have a no-arg default constructor.
this problem is related to the following location:
at java.lang.StackTraceElement
at public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()
at java.lang.Throwable
at java.lang.Error
at public java.lang.Error com.store.web.ws.v1.model.ObjectFactory.createError()
at com.store.web.ws.v1.model.ObjectFactory
at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:106)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:466)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:298)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:141)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1157)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:145)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:236)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:277)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
at com.store.web.ws.v1.resource.RequestInfo.main(RequestInfo.java:171)
However, the moment i change my context line to
JAXBContext jaxbContext = JAXBContext.newInstance(BookType.class);
I get following exception SEVERE: unexpected element (uri:"", local:"book"). Expected elements are (none) which is understandable based on my earlier question
Can someone help me here ? I want to create a context based on package name.
That looks like one of the classes generated from your schema is called
Error, and the compiler has picked thejava.lang.Errorclass over thecom.store.web.ws.v1.model.Errorclass. Try putting an explicitat the top of
ObjectFactory.javaand recompiling it, or failing that edit the code to use fully-qualified class names.(or change the class name and remap it to the right element name using
@XmlRootElement(name="Error"))