Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Grails

error plugin jasper

wwill - jueves 29/10/2009

hola  hize una pequeña prueba con el plugin jasper, lo instale y segui la documentacion del plugin

en una vista puse:

<g:jasperReport jasper="report2" format="PDF" name="Report2" />

el archivo .jasper lo gener con ireport y no tiene ningun error alli 

y al pinchar sobre el link en mi app  en Grails  me sale un error, alguien tiene idea de que puede estar fallando, gracias de antemano.

aqui esta el el error:

java.lang.NullPointerException

at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)

at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)

at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)

at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)

at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)

at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)

at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)

at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:192)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:361)

at net.sf.jasperreports.engine.JasperFillManager$fillReport.call(Unknown Source)

at JasperService$_closure1.doCall(JasperService.groovy:88)

at JasperController$_closure2.doCall(JasperController.groovy:84)

at JasperController.invokeMethod(JasperController.groovy)

at JasperController$_closure1.doCall(JasperController.groovy:55)

at JasperController$_closure1.doCall(JasperController.groovy)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)

at java.lang.Thread.run(Thread.java:619)

 

Re: error plugin jasper

wwill - viernes 30/10/2009

Hola, bueno   desisntale el plugin y voli a instalr pero esta vez la version 0.9.5 sin embrago todo iban bien  me lanzaba el pdf pero no me imprimia ningun registro , la parte del detalle en el jasper salia en blanco, no lo se quiza sea por la version de  ireport que estoy usando (3.6.0 la 3.6.1 no me genera  reporte cuaando especifico un grupo, parece que tiene un error) asi que de nuevo desisntale el plugin jasper  y por alli encontre otros plugins que no me convencieron  asi que busque la forma de hacerlo  como la hacien en Java: recuperaba una conexion a la BD y utilizaba un metodo estatico de la clase JasperRunManager que importaba en los .jar  de ireport, asi que despues de unas horas  de prueba y prueba lo logre, no es algo elaborado de hecho habria que ponerlo en un servicio y controlador  para reportes y porque no  hasta crear un nuevo tag  pero creo que es lo basico, lo siguiente es todo el codigo  que puse en una accion de mi controlador llamado reporte y con esto  pude al fin ver  el dichoso PDF  con todos los registros de mi BD, quiza lo mejor seria hacer esto con un Datasource Java Bean(si alguien lo puede hacer que me  seria estupendo y si lo publica mejor aun) pero tuve problemas  con eso asi que opte por hacerlo con  sentencias SQL, copie los .jar (solo 11) a la carpeta lib de mi proyecto y copie el .jasper a la carpeta reports (hay que crearla) dentro de la carpeta web-app y lo demas fue codigo, espero le pueda servir a alguien:

def reporte={
  /*recuperando una conexion */
String DRIVER="org.postgresql.Driver";
String BDURL="jdbc:postgresql://127.0.0.1:5432/mibd";
Connection conex=null;
Class.forName(DRIVER);
conex=DriverManager.getConnection(BDURL,"perseo","fedora");

/*llamando a ireport*/
   String nombreJasper="report2"
   def rutaReporte="/reports/"+nombreJasper+".jasper"
   def rutaRealArchivoReporte=servletContext.getRealPath(rutaReporte)
//parametros
Map p = new HashMap();
//generando el bianrio
byte[] contenidoBinario = null;
File reportFile = new File(rutaRealArchivoReporte);
contenidoBinario =JasperRunManager.runReportToPdf(reportFile.getPath(),p,conex);
   conex.close()
//pintando el pdf
response.setContentType("application/pdf")
response.setHeader("Content-disposition","attachment; filename="+nombreJasper+".pdf")
response.setContentLength(contenidoBinario.length);
response.getOutputStream().write(contenidoBinario)
}
 

 

Re: error plugin jasper

wwill - viernes 30/10/2009

Hola, bueno   desisntale el plugin y voli a instalr pero esta vez la version 0.9.5 sin embrago todo iban bien  me lanzaba el pdf pero no me imprimia ningun registro , la parte del detalle en el jasper salia en blanco, no lo se quiza sea por la version de  ireport que estoy usando (3.6.0 la 3.6.1 no me genera  reporte cuaando especifico un grupo, parece que tiene un error) asi que de nuevo desisntale el plugin jasper  y por alli encontre otros plugins que no me convencieron  asi que busque la forma de hacerlo  como la hacien en Java: recuperaba una conexion a la BD y utilizaba un metodo estatico de la clase JasperRunManager que importaba en los .jar  de ireport, asi que despues de unas horas  de prueba y prueba lo logre, no es algo elaborado de hecho habria que ponerlo en un servicio y controlador  para reportes y porque no  hasta crear un nuevo tag  pero creo que es lo basico, lo siguiente es todo el codigo  que puse en una accion de mi controlador llamado reporte y con esto  pude al fin ver  el dichoso PDF  con todos los registros de mi BD, quiza lo mejor seria hacer esto con un Datasource Java Bean(si alguien lo puede hacer que me  seria estupendo y si lo publica mejor aun) pero tuve problemas  con eso asi que opte por hacerlo con  sentencias SQL, copie los .jar (solo 11) a la carpeta lib de mi proyecto y copie el .jasper a la carpeta reports (hay que crearla) dentro de la carpeta web-app y lo demas fue codigo, espero le pueda servir a alguien:

def reporte={
  /*recuperando una conexion */
String DRIVER="org.postgresql.Driver";
String BDURL="jdbc:postgresql://127.0.0.1:5432/mibd";
Connection conex=null;
Class.forName(DRIVER);
conex=DriverManager.getConnection(BDURL,"perseo","fedora");

/*llamando a ireport*/
   String nombreJasper="report2"
   def rutaReporte="/reports/"+nombreJasper+".jasper"
   def rutaRealArchivoReporte=servletContext.getRealPath(rutaReporte)
//parametros
Map p = new HashMap();
//generando el bianrio
byte[] contenidoBinario = null;
File reportFile = new File(rutaRealArchivoReporte);
contenidoBinario =JasperRunManager.runReportToPdf(reportFile.getPath(),p,conex);
   conex.close()
//pintando el pdf
response.setContentType("application/pdf")
response.setHeader("Content-disposition","attachment; filename="+nombreJasper+".pdf")
response.setContentLength(contenidoBinario.length);
response.getOutputStream().write(contenidoBinario)
}
 

 

Re: error plugin jasper

wwill - viernes 30/10/2009

me olvidaba  hay que hacer el import  en el controlador de :

import java.sql.*;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
 

Re: error plugin jasper

wwill - viernes 30/10/2009

me olvidaba  hay que hacer el import  en el controlador de :

import java.sql.*;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
 

Re: error plugin jasper

Gerardo E. - sábado 31/10/2009

Hola:

 Para utilizar el DataSource por defecto solo tienes que agregarlo al inicio de tu controlador

 class ReporteController {

  def dataSource

 

def reporte={

  /*recuperando una conexion  

String DRIVER="org.postgresql.Driver";

String BDURL="jdbc:postgresql://127.0.0.1:5432/mibd";

Connection conex=null;

Class.forName(DRIVER);

conex=DriverManager.getConnection(BDURL,"perseo","fedora");

*/

//Aqui utilizas el datasource de del directorio config

def conex = dataSource.getConnection() 

.... //el codigo igual  

 Saludos,

 

 

Re: error plugin jasper

Medardo - lunes 27/06/2011

Hola perdonaras con esta pregunta q te voy hacer pero necesito saber cuales son los .jar que has puesto dentro de la carpeta lib ya que yo tambien estoy realizando reportes y me sale el siguiente error.

Error 500: Executing action [reportes] of controller [versionbeta.DocumentoController] caused exception: java.lang.NoSuchMethodError: net.sf.jasperreports.engine.component.DefaultComponentManager.setDesignConverter(Lnet/sf/jasperreports/engine/component/ComponentDesignConverter;)V
Servlet: grails
URI: /VersionBeta/grails/documento/reportes.dispatch
Exception Message: net.sf.jasperreports.engine.component.DefaultComponentManager.setDesignConverter(Lnet/sf/jasperreports/engine/component/ComponentDesignConverter;)V
Caused by: Executing action [reportes] of controller [versionbeta.DocumentoController] caused exception: java.lang.NoSuchMethodError: net.sf.jasperreports.engine.component.DefaultComponentManager.setDesignConverter(Lnet/sf/jasperreports/engine/component/ComponentDesignConverter;)V
Class: DocumentoController 

 

necesito saber en que estoy fallando o que es lo que me hace falta muchas gracias

Responder al hilo | Volver al foro "Grails" | Volver a los foros