Thread: [Jamvm-general] JamVM and JAXB
Brought to you by:
rlougher
From: Teresa L. J. <gam...@gm...> - 2009-03-01 08:24:21
|
Hi All, I'm trying to compile an XML schema using JAXB 2.1.10 against JamVM: jamvm -verbose -Djava.endorsed.dirs=/usr/local/jamvm/jre/lib/endorsed -jar jaxb-xjc.jar messages.xsd But I'm getting java.lang.NullPointerException. Below is a snippet from a verbose debug stack trace: . . . [Loaded gnu/xml/validation/xmlschema/XMLSchemaSchemaFactory from /usr/local/share/classpath/glibj.zip] [Loaded org/relaxng/datatype/helpers/DatatypeLibraryLoader from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar] [Linking class org/relaxng/datatype/helpers/DatatypeLibraryLoader] [Loaded org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar] [Linking class org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service] [Loaded org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar] [Linking class org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader] [Loaded org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader2 from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar] [Linking class org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader2] [Loaded org/relaxng/datatype/DatatypeException from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar] [Linking class org/relaxng/datatype/DatatypeException] [Loaded org/xml/sax/SAXException from /usr/local/classpath/share/classpath/glibj.zip] [Linking class org/xml/sax/SAXException] [Linking class com/sun/tools/xjc/AbortException] [Loaded com/sun/tools/xjc/AbortException] [Loaded java/lang/reflect/InvocationTargetException from /usr/local/classpath/share/classpath/glibj.zip] [Linking class java/lang/reflect/InvocationTargetException] [Loaded java/lang/UnsupportedClassVersionError from /usr/local/classpath/share/classpath/glibj.zip] [Linking class java/lang/UnsupportedClassVersionError] [Loaded java/lang/Throwable$StaticData from /usr/local/classpath/share/classpath/glibj.zip] [Linking class java/lang/Throwable$StaticData] java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:367) at jamvm.java.lang.JarLauncher.main(JarLauncher.java:50) Caused by: java.lang.NullPointerException at org.relaxng.datatype.helpers.DatatypeLibraryLoader$Service$Loader2.getResources(Unknown Source) at org.relaxng.datatype.helpers.DatatypeLibraryLoader$Service.<init>(Unknown Source) at org.relaxng.datatype.helpers.DatatypeLibraryLoader.<init>(Unknown Source) at gnu.xml.validation.xmlschema.XMLSchemaBuilder.<init>(XMLSchemaBuilder.java:69) at gnu.xml.validation.xmlschema.XMLSchemaSchemaFactory.newSchema(XMLSchemaSchemaFactory.java:113) at com.sun.tools.xjc.reader.xmlschema.parser.SchemaConstraintChecker.check(SchemaConstraintChecker.java:101) at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:357) at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:167) at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:113) at com.sun.tools.xjc.Driver.run(Driver.java:313) at com.sun.tools.xjc.Driver.run(Driver.java:191) at com.sun.tools.xjc.Driver._main(Driver.java:116) at com.sun.tools.xjc.Driver.access$000(Driver.java:74) at com.sun.tools.xjc.Driver$1.run(Driver.java:96) It looks like the Gnu class (gnu.xml.validation.xmlschema.XMLSchemaBuilder) is incompatible with JAXB's class (org.relaxng.datatype.helpers.DatatypeLibraryLoader). Is this an incompatibility issue? Is JamVM/Classpath compatible with Sun's JAXB? Any help would be greatly appreciated. Regards, Teresa |
From: Mark W. <ma...@kl...> - 2009-03-01 21:29:41
|
Hi Teresa, On Sun, 2009-03-01 at 00:24 -0800, Teresa L. Johnson wrote: > Caused by: java.lang.NullPointerException > at org.relaxng.datatype.helpers.DatatypeLibraryLoader$Service > $Loader2.getResources(Unknown Source) > at org.relaxng.datatype.helpers.DatatypeLibraryLoader > $Service.<init>(Unknown Source) > [...] > It looks like the Gnu class > (gnu.xml.validation.xmlschema.XMLSchemaBuilder) is incompatible with > JAXB's > class (org.relaxng.datatype.helpers.DatatypeLibraryLoader). This looks like the following GNU Classpath bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38149 There is a suggestion in comment #1 on how to solve it. Could you try that out? If it works, we need to patch it upstream. Thanks, Mark |
From: Teresa L. J. <gam...@gm...> - 2009-03-02 09:57:09
|
Hi Mark, Thanks for your reply. I made the suggested changes in the getResources() method of Loader2 so that it reflects the following: Enumeration getResources(String resName) { ClassLoader cl = Loader.class.getClassLoader(); URL url; if (cl == null) url = ClassLoader.getSystemResource(resName); else url = cl.getResource(resName); return new Singleton(url); } It did work and I no longer received a NullPointerException in DatatypeLibraryLoader. However, a new error occurs: java.lang.annotation.AnnotationTypeMismatchException when executing the following line: jamvm -verbose -Djava.endorsed.dirs=/usr/local/jamvm/jre/lib/endorsed -Djavax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl -jar jaxb-xjc.jar message.xsd javax.xml.datatype.DatatypeFactory points to JAXP's implementation since gnu.xml.datatype.JAXPDatatypeFactory doesn't exist. Below is the stack trace: java.lang.reflect.InvocationTargetException at java.lang.reflect.VMMethod.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:327) at jamvm.java.lang.JarLauncher.main(JarLauncher.java:50) Caused by: java.lang.annotation.AnnotationTypeMismatchException at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:379) at $Proxy1.propOrder(Unknown Source) at com.sun.xml.bind.v2.model.annotation.XmlTypeQuick.propOrder(XmlTypeQuick.java:40) at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.<init>(ClassInfoImpl.java:172) at com.sun.xml.bind.v2.model.impl.RuntimeClassInfoImpl.<init>(RuntimeClassInfoImpl.java:95) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createClassInfo(RuntimeModelBuilder.java:110) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createClassInfo(RuntimeModelBuilder.java:81) at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:239) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:100) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:81) at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:209) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:95) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:81) at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:315) at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:330) at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:441) at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:288) at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1111) at com.sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo.getJAXBContext(BindInfo.java:330) at com.sun.tools.xjc.reader.xmlschema.bindinfo.AnnotationParserFactoryImpl$1.<init>(AnnotationParserFactoryImpl.java:80) at com.sun.tools.xjc.reader.xmlschema.bindinfo.AnnotationParserFactoryImpl.create(AnnotationParserFactoryImpl.java:79) at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.createAnnotationParser(NGCCRuntimeEx.java:359) at com.sun.xml.xsom.impl.parser.state.annotation.action0(annotation.java:48) at com.sun.xml.xsom.impl.parser.state.annotation.enterElement(annotation.java:73) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378) at com.sun.xml.xsom.impl.parser.state.NGCCHandler.spawnChildFromEnterElement(NGCCHandler.java:74) at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:500) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378) at com.sun.xml.xsom.impl.parser.state.NGCCHandler.revertToParentFromEnterElement(NGCCHandler.java:111) at com.sun.xml.xsom.impl.parser.state.foreignAttributes.enterElement(foreignAttributes.java:50) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378) at com.sun.xml.xsom.impl.parser.state.NGCCHandler.spawnChildFromEnterElement(NGCCHandler.java:74) at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:255) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378) at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:373) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378) at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:213) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378) at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:347) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378) at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:305) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378) at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:468) at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.startElement(NGCCRuntime.java:219) at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527) at com.sun.tools.xjc.util.SubtreeCutter.startElement(SubtreeCutter.java:104) at com.sun.tools.xjc.reader.ExtensionBindingChecker.startElement(ExtensionBindingChecker.java:144) at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527) at com.sun.tools.xjc.reader.xmlschema.parser.IncorrectNamespaceURIChecker.startElement(IncorrectNamespaceURIChecker.java:113) at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527) at com.sun.tools.xjc.reader.xmlschema.parser.CustomizationContextChecker.startElement(CustomizationContextChecker.java:188) at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527) at com.sun.tools.xjc.ModelLoader$SpeculationChecker.startElement(ModelLoader.java:455) at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527) at com.sun.tools.xjc.reader.internalizer.VersionChecker.startElement(VersionChecker.java:98) at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2740) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333) at com.sun.xml.xsom.parser.JAXPParser.parse(JAXPParser.java:115) at com.sun.tools.xjc.ModelLoader$2.parse(ModelLoader.java:479) at com.sun.tools.xjc.ModelLoader$XMLSchemaParser.parse(ModelLoader.java:262) at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.parseEntity(NGCCRuntimeEx.java:337) at com.sun.xml.xsom.impl.parser.ParserContext.parse(ParserContext.java:124) at com.sun.xml.xsom.parser.XSOMParser.parse(XSOMParser.java:183) at com.sun.tools.xjc.ModelLoader.createXSOMSpeculative(ModelLoader.java:496) at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:366) at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:167) at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:113) at com.sun.tools.xjc.Driver.run(Driver.java:313) at com.sun.tools.xjc.Driver.run(Driver.java:191) at com.sun.tools.xjc.Driver._main(Driver.java:116) at com.sun.tools.xjc.Driver.access$000(Driver.java:74) at com.sun.tools.xjc.Driver$1.run(Driver.java:96) The error stems from the following code in AnnotationInvocationHandler.java (line:379): public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodName = method.getName().intern(); if (args == null || args.length == 0) { if (methodName == "toString") { return toString(type, memberValues); } else if (methodName == "hashCode") { return Integer.valueOf(hashCode(type, memberValues)); } else if (methodName == "annotationType") { return type; } else { Object val = memberValues.get(methodName); if (val == null) { throw new IncompleteAnnotationException(type, methodName); } if (! getBoxedReturnType(method).isInstance(val)) { throw new AnnotationTypeMismatchException(method, val.getClass().getName()); } <------------------------------------------------------------------------------------------------------ line 379 if (val.getClass().isArray()) { val = arrayClone(val); } return val; } } else if (args.length == 1) { if (methodName == "equals") { return Boolean.valueOf(equals(type, memberValues, args[0])); } } throw new InternalError("Invalid annotation proxy"); } It appears that "val" is an instance of an unexpected type. Do you know if there's a workaround for this error? Or is this a case of incompatibility? Again, many, many thanks for your help. Regards, Teresa On Sun, Mar 1, 2009 at 1:29 PM, Mark Wielaard <ma...@kl...> wrote: > Hi Teresa, > > On Sun, 2009-03-01 at 00:24 -0800, Teresa L. Johnson wrote: > > Caused by: java.lang.NullPointerException > > at org.relaxng.datatype.helpers.DatatypeLibraryLoader$Service > > $Loader2.getResources(Unknown Source) > > at org.relaxng.datatype.helpers.DatatypeLibraryLoader > > $Service.<init>(Unknown Source) > > [...] > > It looks like the Gnu class > > (gnu.xml.validation.xmlschema.XMLSchemaBuilder) is incompatible with > > JAXB's > > class (org.relaxng.datatype.helpers.DatatypeLibraryLoader). > > This looks like the following GNU Classpath bug: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38149 > > There is a suggestion in comment #1 on how to solve it. > Could you try that out? If it works, we need to patch it upstream. > > Thanks, > > Mark > > |
From: Chris B. <do...@bl...> - 2009-03-02 09:07:24
|
Hi Teresa, Teresa L. Johnson wrote: > I'm trying to compile an XML schema using JAXB 2.1.10 against JamVM: XML schema validation is not yet supported in Classpath. -- Chris Burdess |
From: Teresa L. J. <gam...@gm...> - 2009-03-02 10:02:24
|
Hi Chris, Ah. That might explain the java.lang.annotation.AnnotationTypeMismatchException that I'm having. Thanks! Regards, Teresa On Mon, Mar 2, 2009 at 12:44 AM, Chris Burdess <do...@bl...> wrote: > Hi Teresa, > > Teresa L. Johnson wrote: > >> I'm trying to compile an XML schema using JAXB 2.1.10 against JamVM: >> > > XML schema validation is not yet supported in Classpath. > -- > Chris Burdess > > |