Re: NPE in parser->getDOMImplementation() with CNI

Sam Ruby <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.