Programación en castellano
Inicio > Foros > Java (básico) > Ayuda con Jasperreports
-Foros de debate

Java (básico)
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Ayuda con Jasperreports
Enviado por alonso el día 21 de mayo de 2004

Saludos a todos: tengo un problema que paso a explicar :
He estado tratando de cargar varios ejemplos de JasperReports tanto en el NetBeans
como en el JCreator y siempre encuentro excepciones. Estoy trabajando con el NetBeans
desde hace casi un año y sólo he podido hacer reportes utilizando formato HTML el cual
visualizo en un JTextPane, pero no son muy presentables que digamos. He estado leyendo
mucha informacion acerca de JasperReport y del iReport, éste último es una buena herramienta
para usar el Jasperreports pero siempre encuentro problemas al tratar de hacer aunque sea un
programa de ejemplo para ver como funciona. Hasta ahora solo he conseguido excepciones como :
java.io.FileNotFoundException: miarchivo.xml (El sistema no puede hallar el archivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at dori.jasper.engine.xml.JRXmlLoader.load(JRXmlLoader.java:338) ...............etc.
//-------- otra excepcion es :
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
at java.lang.ClassLoader.defineClass0(Native Method)
..................... etc.
He encontrado solo un par de páginas en la web en donde se muestra un poco de codigo
pero son un tanto escuetos o se obvian algunos detalles sobre todo cuando uno es nuevo en java o jasperreports.
En el caso especial de netBeans debo colgar el archivo jar de jasperreports o mi archivo xml en
algun directorio en especial ?? he tratado de muchas formas y no he logrado nada. Con el iReport
no existe ningun problema ya que puedo crear los xml y compilarlos y ejecutarlos con el mysql e incluso
imprimirlos en todos sus formatos, pero como puedo hacer todo eso desde mi aplicacion.??
Agradeceria si alguien pudiera darme alguna orientacion en este asunto ???
(llevo 5 dias pegado a la silla y casi al borde de la desesperacion)


 
Re: Ayuda con Jasperreports
Enviado por maramonar el día 21 de mayo de 2004

Nosotros lo estamos utilizando en nuestra aplicación, pero no mostramos el resultado directamente, le enviamos un correo al usuario que solicitó el reporte con una url al archivo generado. Para generar el reporte usamos una función mas o menos así:
public void fillReport(String reportName, Map reportParams, int exportFormat, String resultFileName, Map extraParams) throws ServicesException {
Connection conn = null;
try {
DataSource ds = (DataSource)ObjectLocator.getInstance().lookup(JNDINames.DEFAULT_APP_DATASOURCE);
conn = ds.getConnection();

JasperPrint jasperPrint = null;
if (exportFormat != ReportPrintingTask.TO_CSV)
{
// Agrego un parámetro a los definidos por el usuario con el path para encontrar los fuentes de los subreportes
String reportFilePath = reportName.substring(0, reportName.lastIndexOf("/") + 1);
reportParams.put("SUB_REPORT_PATH", reportFilePath);
jasperPrint = JasperFillManager.fillReport(reportName, reportParams, conn);
}

if (exportFormat == ReportPrintingTask.TO_XLS) {
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
xlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, resultFileName);
xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
xlsExporter.exportReport();
} else if (exportFormat == ReportPrintingTask.TO_HTML) {
JRHtmlExporter htmlExporter = new JRHtmlExporter();
htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
htmlExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, resultFileName);
htmlExporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.FALSE);
htmlExporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
htmlExporter.exportReport();
} else if (exportFormat == ReportPrintingTask.TO_PDF) {
JRPdfExporter pdfExporter = new JRPdfExporter();
pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
pdfExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, resultFileName);
pdfExporter.exportReport();
} else if (exportFormat == ReportPrintingTask.TO_CSV) {
String spName = (String) extraParams.get("spName");
exportToCSV(reportParams,resultFileName,spName);
}

} catch (Exception e) {
throw new ServicesException("JasperReportGenerator.fillReport()", e);
} finally {
if (conn != null) {
try {conn.close();} catch (Exception e) {}
}
}
}
Probablemente el código quede bastante confuso, pero las partes importantes serían:
jasperPrint = JasperFillManager.fillReport(reportName, reportParams, conn);
le pedis a Jasper que genere un reporte en su formato "nativo" y luego con este y el formato de reporte que haya elegido el usuario usas el Exporte que corresponda. De nuestra experiencia el único formato que sale "como la gente" es el pdf, los demás son una porquería.
Con respecto a las excepciones que comentas que te aparecen, la primera parecería que se produce porque no encuentra el fuente del reporte. Cuando haces fillReport(reportName, reportParams, conn)
reportName tiene que tener el camino completo para poder llegar al xml del reporte.
La otra excepción paracería indicar que te falta el commons-digester-1.3 en el classpath...fijate que necesitas una bocha de librerías en el classpath para que funcione. En fin....paciencia....

 
Re: Re: Ayuda con Jasperreports
Enviado por jbarrau el día 25 de mayo de 2004

yo tengo un drama parecido al tuyo.
Trabajo con eclipse, jasper reports e ireports.
El cliente trabaja con el programa correctamente desde el entorno del eclipse, pero al intentar usar la aplicación fuera me fallan los listados.
Como chapucilla he copiado todas las clases habidas y por haber (las que aparecen en el listado de jars del proyecto de eclipse) al directorio \lib del java, pero el problema persiste. El error exacto es:
java.lang.NoClassDefFoundError: dori/jasper/engine/JasperFillManager
at auditori.actionPerformed(auditori.java:1382)

todo el código del programa está en el directorio lib, el classpath apunta justo ahí y estoy bastante desesperado.
La verdad es que la falta de documentación del Jasperreports desespera un poco, pero, en fin.

algunos truquillos que hay que saber y sin los que te vuelves loco son:
- copiar tools.jar en el directorio \lib, porque esta librería incluye el compilador que usa jasper para generar los listados

- modificar el código de jasperviewer para que tu aplicación no se cierre cada vez que previsualizas el listado y volver a crear jasperreports-0.5.0-applet.jar; es un tostón, pero puedes aprovechar para traducir al español el previsualizador.

Si quereis compartir cualquier tipo de información con respecto al jasper aquí estamos, y si alguien me puede ayudar con mi problemilla...

 

Re: Re: Ayuda con Jasperreports
Enviado por alonso el día 26 de mayo de 2004

Hola maramonar:
antes que nada te agradesco que hayas contestado a mi duda. Te comento que he seguido algunos consejos: he copiado todas las librerias que vienen con el zip del jasperreports project en mi JDK y tambien he dado la ruta completa a mi archivo xml.
he tomado uno de los demos al cual por comodidad he borrado algunos comentarios es el siguiente:
//--------------------------------------------------------------------------------------------------------------------------------------------
import dori.jasper.engine.*;
import dori.jasper.engine.export.*;
import dori.jasper.engine.util.*;
import dori.jasper.view.*;
import java.awt.Color;
import java.util.*;
import java.io.*;

public class AlterDesignApp
{
private static final String TASK_COMPILE = "compile";
private static final String TASK_FILL = "fill";
private static final String TASK_PRINT = "print";
private static final String TASK_PDF = "pdf";

public static void main(String[] args)
{
String fileName = null;
String taskName = null;

if(args.length == 0)
{
usage();
return;
}

int k = 0;
while ( args.length > k )
{
if ( args[k].startsWith("-T") )
taskName = args[k].substring(2);
if ( args[k].startsWith("-F") )
fileName = args[k].substring(2);

k++;
}

try
{
long start = System.currentTimeMillis();
if (TASK_COMPILE.equals(taskName))
{
JasperCompileManager.compileReportToFile(fileName);
System.err.println("Compile time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_FILL.equals(taskName))
{
File sourceFile = new File(fileName);
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile);

JRRectangle rectangle = (JRRectangle)jasperReport.getTitle().getElementByKey("first.rectangle");
rectangle.setForecolor(new Color((int)(16000000 * Math.random())));
rectangle.setBackcolor(new Color((int)(16000000 * Math.random())));

rectangle = (JRRectangle)jasperReport.getTitle().getElementByKey("second.rectangle");
rectangle.setForecolor(new Color((int)(16000000 * Math.random())));
rectangle.setBackcolor(new Color((int)(16000000 * Math.random())));

rectangle = (JRRectangle)jasperReport.getTitle().getElementByKey("third.rectangle");
rectangle.setForecolor(new Color((int)(16000000 * Math.random())));
rectangle.setBackcolor(new Color((int)(16000000 * Math.random())));

JRReportFont reportFont = jasperReport.getFonts()[0];
reportFont.setSize(16);
reportFont.setItalic(true);

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, (JRDataSource)null);

File destFile = new File(sourceFile.getParent(), jasperReport.getName() + ".jrprint");
JRSaver.saveObject(jasperPrint, destFile);

System.err.println("Filling time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_PRINT.equals(taskName))
{
JasperPrintManager.printReport(fileName, true);
System.err.println("Printing time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_PDF.equals(taskName))
{
JasperExportManager.exportReportToPdfFile(fileName);
System.err.println("PDF creation time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else
{
usage();
System.exit(0);
}
}
catch (JRException e)
{
e.printStackTrace();
System.exit(1);
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
}

private static void usage()
{
System.out.println( "AlterDesignApp usage:" );
System.out.println( "\tjava AlterDesignApp -Ttask -Ffile" );
System.out.println( "\tTasks : compile | fill | print | pdf" );

//Para compilar el reporte escrbir en set arguments: (en mi caso desde el NetBeans)
// -Tcompile -Fd:\pruebajasper\ejemplo1\AlterDesignReport.xml
//Para llenar el reporte escrbir en set arguments:
// -Tfill -Fd:\pruebajasper\ejemplo1\AlterDesignReport.jasper
//Para crear el pdf escrbir en set arguments:
// -Tpdf -Fd:\pruebajasper\ejemplo1\AlterDesignReport.jrprint
//Para imprimir el pdf escrbir en set arguments:
// -Tprint -Fd:\proyectos-java\jasper-rep\ejemplo1\AlterDesignReport.jrprint
//claro está que las rutas de los archivos son relativas a mi ejemplo
}
}
//--------------------------------------------------------------------------------------------------------------------------------------------


He tratado de hacerlo funcionar. Lo que si he logrado es hacer las tareas fill, print y pdf, excepto la tarea "compile" en la cual me sale la siguiente excepcion:
//--------------------------------------------------------------------------------------------------------------------------------------------
java.io.IOException: CreateProcess: javac -classpath "C:\WINDOWS\.netbeans\3.5\system;C:\ARCHIVOS DE PROGRAMA\NETBEANS IDE 3.5.1\system;C:\Archivos de programa\NetBeans IDE 3.5.1\modules\ext\AbsoluteLayout.jar;C:\Archivos de programa\NetBeans IDE 3.5.1\modules\autoload\ext\servlet-2.3.jar;C:\Archivos de programa\NetBeans IDE 3.5.1\lib\ext\xml-apis-1.0b2.jar;C:\Archivos de programa\NetBeans IDE 3.5.1\beans\TimerBean.jar;C:\almacen;D:\proyectos-java\jasper-rep\ejemplo1;D:\proyectos-java\jasper-rep\jasperreports-0.5.2.jar;" "C:\Archivos de programa\NetBeans IDE 3.5.1\AlterDesignReport.java" error=0
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.<init>(Win32Process.java:66)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:566)
at java.lang.Runtime.exec(Runtime.java:491)
at java.lang.Runtime.exec(Runtime.java:457)
at dori.jasper.engine.design.JRJavacCompiler.compileClass(JRJavacCompiler.java:102)
at dori.jasper.engine.design.JRAbstractJavaCompiler.compileReport(JRAbstractJavaCompiler.java:151)
at dori.jasper.engine.design.JRDefaultCompiler.compileReport(JRDefaultCompiler.java:136)
at dori.jasper.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:135)
at dori.jasper.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:107)
at AlterDesignApp.main(AlterDesignApp.java:43)
//--------------------------------------------------------------------------------------------------------------------------------------------

es decir que puedo crear el archivo *.pdf, *.jrprint, pero no puedo crear el *.jasper a partir de xml.
Es un alivio haber salido del trance de no poder hacer nada gracias a vuestros consejos y espero que puedas tener algun tiempito de poder responderme. este ejemplo es sencillo; sólo pinta tres bandas con colores aleatorios pero es lo primero que debo poder hacer antes de meterme en los reportes con las b.d. y con mysql. Pero lo principal es que no puedo generar el *.jasper a partir del *.xml.
Gracias por la ayuda.
Alonso.

 
Re: Re: Re: Ayuda con Jasperreports
Enviado por maramonar el día 26 de mayo de 2004

La verdad que con ese problema mucho no te voy a poder ayudar....se me ocurre que puede ser que no "encuentre" el file (.xml) que queres compilar o que no tengas permisos para escribir en la carpeta donde tiene que dejar el archivo compilado.
Nostros utilizamos iReport, tanto para diseñar como para compilar y probar los reportes. La aplicación se lleva los reportes ya compilados...vos estas tratando de compilarlos por código sólo para hacer un test???

 

Re: Re: Re: Ayuda con Jasperreports
Enviado por Jorge Rodriguez el día 16 de junio de 2004

Pon tools.jar en tu classpath, y todo va funcionar bien.

Chao

 


Re: Re: Ayuda con Jasperreports
Enviado por Gemm el día 11 de febrero de 2005

Hola,
Tengo el formato de un reporte en Ireport y necesito correrlo con tomcat.

Por Favor si me puedes ayudar, no se que librerias utilizar y donde.....

Gracias de antemano

 


Re: Ayuda con Jasperreports
Enviado por yo ni el día 19 de junio de 2004

estudia y no seas vago o que acaso quieres que te de el codigo ah y nos vemos y o seas vago y investiga has algo siquiera

 
Re: Re: Ayuda con Jasperreports
Enviado por alonso el día 20 de junio de 2004

¿¿¿ " y investigar " ???? ??

Que dios nos proteja...

 
Ayuda con Jasperreports
Enviado por Balles el día 17 de mayo de 2005

Tengo un problema parecido, creo un xml, lo compilo y creo el .jasper.
Creo que me lo debe de crear mal, porque en el xml pongo un texto plano y me muestra el pdf pero sin ningun texto.
Alguien sabe porque puede ser?

El codigo que uso para cargar el .jasper es:

String fiche = "C:/Codigoinformes/plantillas/prueba.jasper";
FileInputStream reportFile = new FileInputStream(fiche);
Connection con = cargarConexion();
System.out.println("Crea la conexion");

jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, con );
byte[] devolver;
devolver = JasperExportManager.exportReportToPdf(jasperPrint);
response.setContentType("application/pdf");
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(devolver);

Gracias por anticipado.
Balles.

 
Re: Ayuda con Jasperreports
Enviado por Jose el día 12 de agosto de 2005

public JasperReport verificarReporte(String Rpt){
JasperReport reporte=null;
Reportes ventana = new Reportes();
Rpt= \"/\"+ Rpt + \".jasper\";
URL urlReporte=
ventana.getClass).getResource(Rpt);
try {
reporte = (JasperReport)JRLoader.loadObject(urlReporte);
}catch (JRException e) {
e.printStackTrace();
}
return reporte;
}
El problema en este fragmento se presenta al tratar de llenar el objeto reporte ya que le da el valor de null y el urlReporte no es null , sera que hay algun conflicto de compilacion entre ireport y el motor de compilacion de netbeans

 




Re: Ayuda con Jasperreports
Enviado por ChinoKao el día 12 de agosto de 2005

Yo uso el jFreeReports y la verdad es que he tenido problemas parecidos, que se solucionaban importando correctamente las librerías (cuando ejecuto con NetBeans) y creando un jar manualmente con todos los .class de las librerías del jFreeReport y mis archivos, para ejecutarlo en otras máquinas.

A mi me funciona bien, si usas jCreator mira a ver si en el proyecto has importado correctamente las librerías del JasperReports.

Bueno un saludo

 

Re: Ayuda con Jasperreports
Enviado por Engels el día 9 de mayo de 2008

Buenas Tardes.
Se que tu comentario es un poco atrasado, pero me gustaria que me pudieras enviar la manera de hacer correr el ireport con jsp. De antemano te agradezco

 

Re: Ayuda con Jasperreports
Enviado por Fernando Ayala el día 10 de mayo de 2008

Saludos, mira lo q creo q t esta ocurriendo es q te faltan algunas de las librerias para poder ejecutar el reportey es x eso q t sale esta excepcion:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
at java.lang.ClassLoader.defineClass0(Native Method)

Si t interesa recibir ayuda al respecto escribeme a: elzorro240@hotmail.com y co gusto t enviare una muy util ayuda con ejemplos. . .

 


Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados