You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by "Kenneth B. Harwood" <ru...@comcast.net> on 2005/08/11 22:46:03 UTC

loadSVGDocument generates NullPointerException

My system configuration:

Batik 1.6
J2SE 5.0/JApplet
Apache/Tomcat/MySQL
Windows 2K Pro

Problem description:

I create a JSVGCanvas, initially "blank" (no SVG file
displayed) then I put the instance in a new thread.
I then start() the Thread.  Each time my program 
reaches the following block:

public void run() {
       pack();
      try {
            jSVGCanvas.loadSVGDocument("http://www.mydomain.com/default.svg"); //NPE THROWN HERE!
        } catch (Exception expn) {
            System.out.println("Error loading SVG file.");
            expn.printStackTrace();
        }

        setVisible(true);
}


I get a NullPointerException.  Here's the entire stackTrace:

java.lang.NullPointerException
 at com.mydomain.run(myclass.java:38)
 at java.lang.Thread.run(Unknown Source)

I catch the Exception so I continue on.  What happens next 
depends on my mouse clicks.  For example, after experiencing
a ModifyThreadGroup error (a problem for another day) I *can* 
get my SVG file to appear.  After that, I can even load a different 
SVG file in response to a Menu click (see below).

Sometimes, depending on my mouse click sequence, when I try 
to load an SVG in response to a Menu Action, I get this sort of 
lengthy NPE error:

java.lang.NullPointerException
 at java.util.Properties$LineReader.readLine(Unknown Source)
 at java.util.Properties.load(Unknown Source)
 at org.apache.batik.util.XMLResourceDescriptor.getParserProps(Unknown Source)
 at org.apache.batik.util.XMLResourceDescriptor.getXMLParserClassName(Unknown Source)
 at org.apache.batik.swing.svg.JSVGComponent$BridgeUserAgent.getXMLParserClassName(Unknown Source)
 at org.apache.batik.swing.svg.JSVGComponent$BridgeUserAgentWrapper.getXMLParserClassName(Unknown Source)
 at org.apache.batik.bridge.DocumentLoader.<init>(Unknown Source)
 at org.apache.batik.swing.svg.JSVGComponent$1.run(Unknown Source)
 at org.apache.batik.swing.svg.JSVGComponent.stopThenRun(Unknown Source)
 at org.apache.batik.swing.svg.JSVGComponent.loadSVGDocument(Unknown Source)  <<<<<<<<< LOOK HERE!
 at myclass.jMenuItem2Chosen(myclass.java:104)
 at myclass.access$100(myclass.java:17)
 at myclass.$3.actionPerformed(myclass.java:88)
 at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
 at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
 at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
 at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
 at javax.swing.AbstractButton.doClick(Unknown Source)
 at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
 at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
 at java.awt.Component.processMouseEvent(Unknown Source)
 at javax.swing.JComponent.processMouseEvent(Unknown Source)
 at java.awt.Component.processEvent(Unknown Source)
 at java.awt.Container.processEvent(Unknown Source)
 at java.awt.Component.dispatchEventImpl(Unknown Source)
 at java.awt.Container.dispatchEventImpl(Unknown Source)
 at java.awt.Component.dispatchEvent(Unknown Source)
 at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
 at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
 at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
 at java.awt.Container.dispatchEventImpl(Unknown Source)
 at java.awt.Window.dispatchEventImpl(Unknown Source)
 at java.awt.Component.dispatchEvent(Unknown Source)
 at java.awt.EventQueue.dispatchEvent(Unknown Source)
 at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
 at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 at java.awt.EventDispatchThread.run(Unknown Source)

BTW, my design calls for potentially multiple JSVGCanvas's; each
one runs in its own thread.  I think my thread-related stuff if O.K.
although I am certainly *NOT* a Java guru.  Still, when I run the 
loadSVGDocument code in a very simple test (not using a separate 
thread) the SVG file comes up *No Problem*. [scratching my head]

I've reviewed the Batik-users archive.  I've see plenty of individual
messages regarding NPE, plenty related to loadSVGDocument, but 
*nothing* related to both.

Ideas?  Suggestions?

Thanks.

 - Ken H.

Re: loadSVGDocument generates NullPointerException

Posted by "Kenneth B. Harwood" <ru...@comcast.net>.
Woops.  I think I figured out what the problem was:

My <run> method did *not* have a loop in it so the
Thread ran straight to the end of the method and
"gracefully" terminated. By the time I tried to load 
the SVG file my Thread was probably already "dead".

Does this sound reasonable?

I'm still seeing that initial ModifyThreadGroup error
but the NPE has vanished.

 - Ken H.

  ----- Original Message ----- 
  From: Kenneth B. Harwood 
  Sent: Thursday, August 11, 2005 1:46 PM


  My system configuration:

  Batik 1.6
  J2SE 5.0/JApplet
  Apache/Tomcat/MySQL
  Windows 2K Pro

  Problem description:

  I create a JSVGCanvas, initially "blank" (no SVG file
  displayed) then I put the instance in a new thread.
  I then start() the Thread.  Each time my program 
  reaches the following block:

  public void run() {
         pack();
        try {
              jSVGCanvas.loadSVGDocument("http://www.mydomain.com/default.svg"); //NPE THROWN HERE!
          } catch (Exception expn) {
              System.out.println("Error loading SVG file.");
              expn.printStackTrace();
          }

          setVisible(true);
  }


  I get a NullPointerException.  Here's the entire stackTrace:

  java.lang.NullPointerException
   at com.mydomain.run(myclass.java:38)
   at java.lang.Thread.run(Unknown Source)


  I catch the Exception so I continue on.  What happens next 
  depends on my mouse clicks.  For example, after experiencing
  a ModifyThreadGroup error (a problem for another day) I *can* 
  get my SVG file to appear.  After that, I can even load a different 
  SVG file in response to a Menu click (see below).

  Sometimes, depending on my mouse click sequence, when I try 
  to load an SVG in response to a Menu Action, I get this sort of 
  lengthy NPE error:

  java.lang.NullPointerException
   at java.util.Properties$LineReader.readLine(Unknown Source)
   at java.util.Properties.load(Unknown Source)
   at org.apache.batik.util.XMLResourceDescriptor.getParserProps(Unknown Source)
   at org.apache.batik.util.XMLResourceDescriptor.getXMLParserClassName(Unknown Source)
   at org.apache.batik.swing.svg.JSVGComponent$BridgeUserAgent.getXMLParserClassName(Unknown Source)
   at org.apache.batik.swing.svg.JSVGComponent$BridgeUserAgentWrapper.getXMLParserClassName(Unknown Source)
   at org.apache.batik.bridge.DocumentLoader.<init>(Unknown Source)
   at org.apache.batik.swing.svg.JSVGComponent$1.run(Unknown Source)
   at org.apache.batik.swing.svg.JSVGComponent.stopThenRun(Unknown Source)
   at org.apache.batik.swing.svg.JSVGComponent.loadSVGDocument(Unknown Source)  <<<<<<<<< LOOK HERE!
   at myclass.jMenuItem2Chosen(myclass.java:104)
   at myclass.access$100(myclass.java:17)
   at myclass.$3.actionPerformed(myclass.java:88)
   at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at javax.swing.AbstractButton.doClick(Unknown Source)
   at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
   at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)


  BTW, my design calls for potentially multiple JSVGCanvas's; each
  one runs in its own thread.  I think my thread-related stuff if O.K.
  although I am certainly *NOT* a Java guru.  Still, when I run the 
  loadSVGDocument code in a very simple test (not using a separate 
  thread) the SVG file comes up *No Problem*. [scratching my head]

  I've reviewed the Batik-users archive.  I've see plenty of individual
  messages regarding NPE, plenty related to loadSVGDocument, but 
  *nothing* related to both.

  Ideas?  Suggestions?

  Thanks.

   - Ken H.