Erro Ao Gerar Relatório

Bom dia.

Eu sou iniciante ao framework do ireport e estou encontrando dificuldades para gerar o relatório apartir de uma aplicação, quando rodo esta aplicação acontece os seguinte erro:

[color=red]Exception in thread “main” java.lang.ClassCastException: java.io.BufferedInputStream cannot be cast to com.lowagie.text.pdf.codec.Base64$InputStream[/color]

Como resolvo este problema?

Olá amigo…
Poste o código em que vc gera o relatório pra podermos dar uma olhada por favor cara.
Abraços

Este é o código que abre o relatório:

[color=blue]package agendatelefonica;

import com.lowagie.text.pdf.codec.Base64.InputStream;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;

public class AbriRelatorio {

   public void abrirRelatorioContatos(){


   InputStream inputStream = (InputStream) getClass().getResourceAsStream("/Contatos.jasper");

    Map parametros = new HashMap();
    
    Connection con = ConnectionFactory.getConnection();


    try{

        ReportUtils.openReport("Contatos", inputStream, parametros, con);

       }catch(JRException exc ){
        exc.printStackTrace();
    }
}

}[/color]

Abraços

Eu tenho uma aplicação para a web feita… quer ?

Agradeceria.

Pode me ajudar.

Obrigado rsmoraes.

no Servlet, você coloca assim:


package control;   
  
import java.io.IOException;   
import java.io.OutputStream;   
  
import javax.servlet.ServletException;   
import javax.servlet.http.HttpServlet;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
  
import net.sf.jasperreports.engine.JRResultSetDataSource;   
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 net.sf.jasperreports.engine.design.JasperDesign;   
import net.sf.jasperreports.engine.xml.JRXmlLoader;   
  
import persistence.ProdutoDao;   
  
public class Relatorio extends HttpServlet {   
    private static final long serialVersionUID = 1L;   
  
    protected void doGet(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        execute(request, response);   
    }   
  
    protected void doPost(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        execute(request, response);   
    }   
  
  
    protected void execute(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
           
        ProdutoDao d = new ProdutoDao();   
           
        try{   
            d.open();   
               
    //JasperReports -> iReport   
           
    //Passo o ResultSet do JDBC para o Relatorio   
        JRResultSetDataSource ds = new JRResultSetDataSource(d.findAll());   
               
    //Arquivo do relatório   
        JasperDesign jd = JRXmlLoader.load("c:\\aula\\relatorio.jrxml");   
               
    //Compilar o relatório   
        JasperReport jr = JasperCompileManager.compileReport(jd);   
               
    //Mescar os dados do JDBC ao documento do Relatório   
        JasperPrint jp = JasperFillManager.fillReport(jr, null, ds);   
               
            //Download de PDF   
        response.reset();   
        response.setContentType("application/pdf");   
               
        OutputStream out = response.getOutputStream();   
        JasperExportManager.exportReportToPdfStream(jp, out);   
        out.flush();   
        out.close();               
        }   
        catch(Exception e){   
            e.printStackTrace();   
        }   
        finally{   
            d.close();   
        }   
       
    }   
       
  
  
}  

No seu DAO, utilizei ProdutoDao:



public ResultSet findAll() throws Exception{   
           
    stmt = con.prepareStatement("select * from produto");   
    rs = stmt.executeQuery();   
           
    return rs; //Retorna o proprio ResultSet com os dados do JDBC   
}  

Ai você baixa o !Report… e cria um relatório com ele… com tutoriais vc consegue fácil !!!

E na sua JSP, você coloca uma action do formulário ou um link mesmo, chamando seu servlet…

Assim:


<form method="post" action="Relatorio"> 

<input type="submit" value="Gerar PDF"/> 
</form> 

vlw

Qualquer coisa to aew…

Obrigado RSMORAES.

Disponha amigo, o que precisar é só falar.

:smiley: