Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/08/2009, 03:02
mila_1
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 15 años, 5 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!