Foros del Web » Programación para mayores de 30 ;) » Java »

Reportes en Java

Estas en el tema de Reportes en Java en el foro de Java en Foros del Web. Hola! En una parte de mi aplicación web quiero hacer reportes pdf con iReport. Bien el archivo .jrxml lo tengo, perfecto. También he realizados algunas ...
  #1 (permalink)  
Antiguo 25/08/2009, 03:02
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 1
Reportes en Java

Hola!

En una parte de mi aplicación web quiero hacer reportes pdf con iReport. Bien el archivo .jrxml lo tengo, perfecto. También he realizados algunas pruebas, con este código:

Código PHP:
package es.pfc.gtc.http.controller.actions;


import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;


public class 
JasperReports1
{
  public static 
void main(String[] args)
  {
    
JasperReport jasperReport;
    
JasperPrint jasperPrint;
    try
    {
        
        
//0-Se hace la conexion a la Base de Datos
        
Class.forName("com.mysql.jdbc.Driver");
        
Connection conn DriverManager.getConnection ("jdbc:mysql://localhost:3306/gtc?user=root&password=admin");
        
System.out.println("PASAMOS POR PASO 0!");
        
            
//1-Compilamos el archivo XML y lo cargamos en memoria
      
jasperReport JasperCompileManager.compileReport(
          
"D:/Informes/gtc-informe-PP_INICIO.jrxml");
      
System.out.println("PASAMOS POR PASO 1!");
               
//2-Llenamos el reporte con la información y parámetros necesarios (En este caso nada)
      
jasperPrint JasperFillManager.fillReport(
          
jasperReport, new HashMap(), conn);

      
System.out.println("PASAMOS POR PASO 2!");
               
//3-Exportamos el reporte a pdf y lo guardamos en disco
      
JasperExportManager.exportReportToPdfFile(
          
jasperPrint"D:/Informes/holaMundo.pdf");
      
System.out.println("PASAMOS POR PASO 3!");
      
    
//5-Cerrar la conexion
      
conn.close();
    }
    catch (
Exception e)
    {
      
e.printStackTrace();
    }
  }

Este código me crea el reporte correctamente.
Mi problema está cuando no está en el main.

Código PHP:
package es.pfc.gtc.http.controller.actions;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


import es.pfc.util.exceptions.InternalErrorException;
import es.pfc.util.struts.action.DefaultAction;



public class 
JasperReportAction extends DefaultAction {

    
    protected 
ActionForward doExecute(ActionMapping mappingActionForm form,
            
HttpServletRequest requestHttpServletResponse response)
            
throws IOExceptionServletExceptionInternalErrorException {


                
        
        
        
JasperReport jasperReport;
        
JasperPrint jasperPrint;
        
            
            
            
Map pars = new HashMap();
          try{
              
              
//1. Conexion con la base de datos --> connection
              
             
Class.forName("com.mysql.jdbc.Driver");
              
Connection connection DriverManager.getConnection ("jdbc:mysql://localhost:3306/gtc?user=root&password=okok");
              
System.out.println("1 - DAO REPORT");
              
              
              
//2. Compilar el archivo jrxml y cargar en memoria
              
jasperReport JasperCompileManager.compileReport("C:/Documents and Settings/Administrador/workspace/pfc/gtc-informe-PP_INICIO.jrxml");
               
//jasperReport = JasperCompileManager.compileReport("D:/Informes/gtc-informe-PP_INICIO.jrxml");
               
System.out.println("2 - DAO REPORT");
               
              
//3. Rellenamos el reporte con la información y parámetros necesarios
                   
jasperPrint JasperFillManager.fillReport(jasperReportparsconnection); 
               
               
//4. Exportamos el reporte a pdf y lo guardamos en disco
               
JasperExportManager.exportReportToPdfFile(jasperPrint"D:/Informes/informe.pdf");

              
             } catch (
Exception e) {
               throw new 
InternalErrorException(e);
            } 
finally {
               
          }
        
        
        return 
null;
    }





Trato de ejecutarlo desde una acción (desde una pagina jsp pulsar un botón que me ejecute el action. Los errors que me da es el siguiente :

Código PHP:
java.lang.NoClassDefFoundErrororg/apache/commons/logging/LogFactory
    net
.sf.jasperreports.engine.xml.JRXmlDigesterFactory.<clinit>(JRXmlDigesterFactory.java:180)
    
net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:203)
    
net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:168)
    
net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:152)
    
net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:150)
    
es.pfc.gtc.http.controller.actions.JasperReportAction.doExecute(JasperReportAction.java:65)
    
es.pfc.util.struts.action.DefaultAction.execute(DefaultAction.java:45)
    
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    
es.pfc.gtc.http.controller.frontcontroller.MyPortalRequestProcessor.processActionPerform(MyPortalRequestProcessor.java:41)
    
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    
javax.servlet.http.HttpServlet.service(HttpServlet.java:717
Por qué en un caso me funciona y en otro no???
Quizá sea una tontería... pero yo no lo veo!!
MUCHAS GRACIAS!
  #2 (permalink)  
Antiguo 25/08/2009, 08:09
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años
Puntos: 8
Respuesta: Reportes en Java

Falta que añadas la libreria commons logging la encuentras en la pagina http://commons.apache.org/logging o en la carpeta del ireport ireport/modules/ext dentro del a carpeta ext encontraras todas las libreria que usa el ireport para crear reportes

salu2
  #3 (permalink)  
Antiguo 25/08/2009, 08:18
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Reportes en Java

voy a probar a ver, gracias por leerme y responderme! te cuento
  #4 (permalink)  
Antiguo 25/08/2009, 08:29
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Reportes en Java

Pues ahora me sale otro error. Y eso que para que no me faltase alguna librería he añadido mediante Build Path todas las librerías de ext de iReport:

Código PHP:
java.lang.NoClassDefFoundErrorCould not initialize class net.sf.jasperreports.engine.xml.JRXmlDigesterFactory
    net
.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:203)
    
net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:168)
    
net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:152)
    
net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:150)
    
es.pfc.gtc.http.controller.actions.JasperReportAction.doExecute(JasperReportAction.java:65)
    
es.pfc.util.struts.action.DefaultAction.execute(DefaultAction.java:45)
    
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    
es.pfc.gtc.http.controller.frontcontroller.MyPortalRequestProcessor.processActionPerform(MyPortalRequestProcessor.java:41)
    
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    
javax.servlet.http.HttpServlet.service(HttpServlet.java:717
Ni flores, no sé lo que ocurre!
  #5 (permalink)  
Antiguo 25/08/2009, 09:11
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Reportes en Java

Lo tengo solucionado! GUAY! Tenía las referencias pero no tenía las librerías en el lib de Tomcat!
SALUDOS!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:13.