NPE in parser->getDOMImplementation() with CNI

Sam Ruby rubys@intertwingly.net
Mon Jun 22 11:13:00 GMT 2009


Andrew Haley wrote:
> 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)
>>
>> That is somewhat strange since that method seems fine:
>>   public void println (Object obj)
>>   {
>>     print(obj == null ? "null" : obj.toString(), true);
>>   }
>>
>> So maybe just upgrading to a newer Fedora and gcc 4.4 will be the
>> solution, although I don't completely get what goes wrong on the old
>> install.
> 
> I have no problem with 4.3 either.  I think this may be an install
> problem or some sort of library path problem.
> 
> If you can point me to a failure I can debug I'll have a look.

The script I provided fails with Ubuntu 9.04.  The only things one needs 
to add to a fresh install get to the failure is:

   apt-get install gcj libjaxp1.3-java-gcj

gcj -v reports "gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)"

Downloading the latest Fedora-11-i686-Live.iso, the script passes after 
I change the gcjh line to point to /usr/share/java/jaxp_parser_impl.jar.

gcj -v there reports "gcc version 4.4.0 20090506 (Red Hat 4.4.0-4) (GCC)".

Testing on an older version of Ubuntu (Hardy/8.04.2) also works.  Gcj -v 
there reports "gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu3)".

> Andrew.

- Sam Ruby



More information about the Java mailing list