Erro desconhecido no Jasper

Prezados,

Estou começando a trabalhar com Jasper. O framework me pareceu maravilhoso, mas estou enfrentando problemas para integrá-lo com uma aplicação existente em struts (1.1).

Eu criei uma classe executável dentro do projeto para testar a chamada do relatório. Rodei e tudo OK. Gerou o relatório como deveria. Eis o código:


package intranet.action;

import intranet.db.Database;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperRunManager;

public class Test {

    public static void main(String args[]) {

        byte[] bytes = null;

        try {
            FileInputStream fis = new FileInputStream(new File("C:\\Program Files\\JasperSoft\\iReport-2.0.3\\teste.jasper"));
            bytes = JasperRunManager.runReportToPdf(fis, new HashMap(), Database.getConnection());

            FileOutputStream fos = new FileOutputStream("C:\\teste.pdf");
            fos.write(bytes, 0, bytes.length);
            fos.flush();
            fos.close();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }

    }
}

Feito isto, resolvi criar uma action e colocar o mesmo código para gerar o relatório. Ocorre que ao executar esta linha o fluxo de execução pára e nenhuma exceção é gerada, dificultando a detecção do problema:

            bytes = JasperRunManager.runReportToPdf(fis, new HashMap(), Database.getConnection());

Eis o Código do método da action que executa a chamada do relatório:

    public ActionForward geraRelatorioTeste(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {


        ServletOutputStream servletOutputStream = response.getOutputStream();
        byte[] bytes = null;

        try {
            // Cheguei a utilizar esta referência absoluta ao .jasper para investigar. Mas nem assim deu certo!
            File f = new File("C:\\Program Files\\JasperSoft\\iReport-2.0.3\\teste.jasper");
            InputStream fis = new FileInputStream(f);
            bytes = JasperRunManager.runReportToPdf(fis, new HashMap(), Database.getConnection());

           response.setContentType("application/pdf");
           response.setContentLength(bytes.length);

           servletOutputStream.write(bytes, 0, bytes.length);
           servletOutputStream.flush();
           servletOutputStream.close();

        } catch (Exception e) {
            e.printStackTrace();
        } 
        return null;
    }

tenta dessa forma

InputStream relJasper = getClass().getResourceAsStream("C:\\Program Files\\JasperSoft\\iReport-2.0.3\\teste.jasper");

ou então coloca o .jasper na mesma pasta da classe que vai chama-lo ai vc pode colocar só

InputStream relJasper = getClass().getResourceAsStream("teste.jasper");

só uma dica, num sei se é esse o problema…

se quiser dá uma olhada nesse tutorial

http://blog.apollo-ti.com/?p=8

FLwS

Já havia testado ambas formas, sem suceso! :roll: