Re: [Jamvm-general] JamVM and JAXB
Brought to you by:
rlougher
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 > > |