martes, 10 de abril de 2012

JasperReports Problemas/Solución

He tenido esta semana que generar informes con esta herramientas y me he encontrado con 2 problemas a la hora de generar el pdf.

  1. Me daba el siguiente error:
    Caused by: java.lang.NullPointerException
    at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1812)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1910)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1834)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1634)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1910)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1834)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1910)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1834)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:192)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:361)
    at JasperService$_closure1.doCall(JasperService.groovy:89)
    at JasperController$_closure2.doCall(JasperController.groovy:85)
    at JasperController.invokeMethod(JasperController.groovy)
    at JasperController$_closure1.doCall(JasperController.groovy:56)
    at JasperController$_closure1.doCall(JasperController.groovy)

    Despúes de mirar que las variables que mandaba no llevara nulos y de mirar por internet, encontré la solución.

    Resulta que los archivos jrxml estaban ya creados,y habían sido compilados en una versión diferente al programa que yo estaba utilizando y el proyecto usaba la librería jasperreport 2.0.4 y yo estaba compilando con la versión 4.5.1, al modificar la librería que se descargaba mi proyecto a la misma que del programa que utilizaba para compilar. Error solucionado.


  2. Me daba el error: java.lang.NoSuchFieldError: PRINTSCALING, este también era un error por incompatibilidad de versiones, concretamente de la librería itext.jar que estaba usando una versión muy antigua, al actualizarla se solucionó ese error.