Mark Wielaard wrote: > On Sun, 2009年06月21日 at 16:46 +0100, Andrew Haley wrote: >> Sam Ruby wrote: >>> I'm trying to develop a JAXP implementation using CNI, but I get a >>> NullPointerException when I try to get a DOMImplementation. I've >>> attached a small script (tested on Ubuntu 9.04) which demonstrates the >>> problem. >>>>>> Any help would be appreciated. >> Congratulations on this excellent test case. Next time I want to tell >> people how to do it right, I'll point them at your posting. >>>> However, I get >>>> $ sh ~/testdomimpl.sh >> gnu.xml.dom.DomDocumentBuilderFactory@160ecdad >> gnu.xml.dom.DomDocumentBuilder@15ffbc45 >> gnu.xml.dom.DomImpl@15ef0ee5 >>>> gnu.xml.dom.DomDocumentBuilderFactory@2df0bea7 >> gnu.xml.dom.DomDocumentBuilder@2de03d5f >> gnu.xml.dom.DomImpl@2dd0bfdf >> $ gcj --version >> gcj (GCC) 4.4.0 20090307 (Red Hat 4.4.0-0.23) >> I get the same with that version of gcj. > But on an older gcj installation: > gcj (Debian 4.3.2-2) 4.3.2 >> gnu.xml.dom.DomDocumentBuilderFactory@6992f029 > gnu.xml.dom.DomDocumentBuilder@647a3539 > gnu.xml.dom.DomImpl@64826fa9 >> gnu.xml.dom.DomDocumentBuilderFactory@17d5dffb > gnu.xml.dom.DomDocumentBuilder@12bcf52b > java.lang.NullPointerException > at java.io.PrintStream.println(PrintStream.java:473) I found the problem. There is an implementation of jaxp in /usr/share/java/jaxp-1.3.jar and another in /usr/lib/libgcj.so.90. They are not the same version, and they are not compatible. If you link against /usr/lib/libgcj.so.90 then you must compile against the version of jaxp in that library. Do this: gcjh -cp /usr/share/java/libgcj.jar -d headers \ org.w3c.dom.DOMImplementation \ javax.xml.parsers.DocumentBuilder \ javax.xml.parsers.DocumentBuilderFactory I don't think it's possible to override the version of jaxp that's in /usr/lib/libgcj.so.90. Andrew.