agarrison Posted October 23, 2014 Share Posted October 23, 2014 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?Thanksjava.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 More sharing options...
nthapa Posted November 24, 2014 Share Posted November 24, 2014 Not every part of Jasper report is serializable, In cases where jaserreports use those nonserialiable classes, thats when it throws the exception. Since your report is just 3 pages, it seems you dont really need to enable file virtualization. Link to comment Share on other sites More sharing options...
agarrison Posted November 25, 2014 Author Share Posted November 25, 2014 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 More sharing options...
nthapa Posted November 25, 2014 Share Posted November 25, 2014 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now