Jump to content
Changes to the Jaspersoft community edition download ×

JRBaseDataset not properly serializable throws NullPointerException


agarrison

Recommended Posts

I have a report that contains a subreport in the detail section.  This report works fine in most cases - it generates a 3 page report.  Once I add swap file virtualization, I get a NullPointerException when de-serializing the object. Based on the stack trace and the class, it appears that the reason is that some of the array fields are null (unitialized).  Any one else have this problem or have a solution?

Thanks

java.lang.NullPointerException     
at java.lang.reflect.Array.newArray(Native Method)     
at java.lang.reflect.Array.newInstance(Array.java:70)     
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670)     
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)     
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)     
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)     
at net.sf.jasperreports.engine.base.JRBaseDataset.readObject(JRBaseDataset.java:356)     
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     
at java.lang.reflect.Method.invoke(Method.java:606)     
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)     
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)     
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)     
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)     
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)     
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)     
at net.sf.jasperreports.engine.base.JRBaseReport.readObject(JRBaseReport.java:799)     
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     
at java.lang.reflect.Method.invoke(Method.java:606)     
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)     
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)     
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)     
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)     
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)     
at java.util.HashMap.readObject(HashMap.java:1184)     
at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)     
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     
at java.lang.reflect.Method.invoke(Method.java:606)     
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)     
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)     
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)     
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)     
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)     
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)     
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)     
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)     
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)     
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)     
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)     
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)     
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)     
at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:120)     
at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105)     
at net.sf.jasperreports.engine.fill.JRTemplatePrintImage.readVirtualized(JRTemplatePrintImage.java:538)     
at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119)     
at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35)     
at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137)     
at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105)     
at net.sf.jasperreports.engine.base.VirtualElementsData.readVirtualized(VirtualElementsData.java:179)     
at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119)     
at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35)     
at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137)     
at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105)     
at net.sf.jasperreports.engine.util.VirtualizationSerializer.readData(VirtualizationSerializer.java:136)     
at net.sf.jasperreports.engine.util.SwapFileVirtualizerStore.retrieve(SwapFileVirtualizerStore.java:137)     
at net.sf.jasperreports.engine.fill.StoreVirtualizer.pageIn(StoreVirtualizer.java:62)     
at net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer.requestData(JRAbstractLRUVirtualizer.java:536)     
at net.sf.jasperreports.engine.base.ElementsBlock.ensureData(VirtualizableElementList.java:463)     
at net.sf.jasperreports.engine.base.ElementsBlock.ensureDataAndTouch(VirtualizableElementList.java:432)     
at net.sf.jasperreports.engine.base.ElementsBlock.get(VirtualizableElementList.java:283)     
at net.sf.jasperreports.engine.base.VirtualizableElementList.get(VirtualizableElementList.java:96)     
at net.sf.jasperreports.engine.base.VirtualizableElementList.get(VirtualizableElementList.java:54)     
at java.util.AbstractList$Itr.next(AbstractList.java:358)

Link to comment
Share on other sites

  • 1 month later...
  • Replies 3
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Since virtualization is part of jasper reports, all of it should be serializable, especially something as vital as the JRBaseDataset. Further, I don't know how many pages my report is at runtime. I found this problem on a 3 page report, but it could just as easily be a 300 page report.
Link to comment
Share on other sites

I completely agree to what you are saying, infact JRBaseDataset is serializable in itself but this is a pretty intensive class and some of the component that gets generated for any particular report might not be serializable and that seems to be the main reason. I am not sure what are the components you have on your report, that is one possible route to take.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...