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