JasperReport não funciona

6 respostas
anderson.bonavides

Pessoal estou com uma duvida de iniciante do JasperReport. Estou tentando gerar o relatório com o Jasper mas não consigo, é gerado 2 erros que variam.

O primeiro erro:

10:27:58,578 FATAL [application] java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.fill.JRVerticalFille

O segundo:

java.lang.ExceptionInInitializerError

Meu método:

public String gerarRelatorioGeralPorInscritos() throws Exception {
        inscrito = new Inscrito();
        try {
            List<Inscrito> lista = (List) getInscritos();
            DataSourceRelatorio dataSource = new DataSourceRelatorio(lista);
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
            InputStream reportStream = context.getExternalContext().getResourceAsStream("/WEB-INF/relatorio/RelatorioGeralPorInscritos.jasper");
            response.setContentType("application/pdf");
            response.setHeader("Content-disposition", "attachment;filename=" + "RelatorioGeralPorInscritos" + ".pdf");
            ServletOutputStream servletOutputStream = response.getOutputStream();
            
            HashMap map = new HashMap();

            for (Iterator<Inscrito> it = lista.iterator(); it.hasNext();) {
                inscrito = it.next();
                
                if ((inscrito != null) && (inscrito.getCodigoInscrito() != 0)) {
                    map.put("codi_insc", inscrito.getCodigoInscrito());
                } else {
                    map.put("codi_insc", 0);
                }

                if (!inscrito.getNomeInscrito().equals("")) {
                    map.put("nome_insc", inscrito.getNomeInscrito());
                } else {
                    map.put("nome_insc", "");
                }

                if (!inscrito.getNumeroCpf().equals("")) {
                    map.put("nume_cpf", inscrito.getNumeroCpf());
                } else {
                    map.put("nume_cpf", "");
                }

                if (!inscrito.getDescricaoSexo().equals("")) {
                    map.put("desc_sexo", inscrito.getDescricaoSexo());
                } else {
                    map.put("desc_sexo", "");
                }


                if (!inscrito.getDescricaoEmail().equals("")) {
                    map.put("descricaoEmail", inscrito.getDescricaoEmail());
                } else {
                    map.put("descricaoEmail", "");
                }
            }

            try {
                JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, map, dataSource);
            } finally {
                context.responseComplete();
                servletOutputStream.flush();
                servletOutputStream.close();
            }

        } catch (JRException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "Sucesso";
    }

6 Respostas

Pedrosa

A lib do jasper esta no classpath do projeto?

anderson.bonavides

Sim, aqui está todas as libs do meu classpath:

Classpath:

mysql-connector-java-5.0.4-bin jasperreports-flash-2.0.5 jasperreports-extensions-1.3.1 jasperreports-3.0.0 itext-1.3.1 iReport commons-logging-api-1.0.2 commons-javaflow-20060411 commons-collections-2.1 commons-beanutils-1.7

janjan

cara eu uso o 2.0.alguma coisa
e no evento que eu quero gerar o relatorio
chamo esse metodo
e soh digo o caminho do meurelatorio.jrxml

public void relatorios(String caminho){
        HashMap parametros = new HashMap();
        try {
             JasperDesign jasperDesign = JRXmlLoader.load(caminho);
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            JasperPrint impressao = JasperFillManager.fillReport(jasperReport, parametros, Conexao);
            JasperViewer jrviewer = new JasperViewer(impressao, false);

            JFrame viewer = new JFrame();
            viewer.setSize(800, 600);
            viewer.setLocationRelativeTo(null);
            viewer.getContentPane().add(jrviewer.getContentPane());

            viewer.setVisible(true);
        } catch (JRException ex) {
            ex.printStackTrace();
        }


    }
anderson.bonavides

Pelo que eu pude perceber é que para gerar relatórios web a coisa funciona um pouco diferente. É preciso escrever o relatório no disco pra ser gerado. Já tentei algo parecido com esse seu ai e também não funcionou.

:frowning:

danielsb2

anderson.bonavides:
Pelo que eu pude perceber é que para gerar relatórios web a coisa funciona um pouco diferente. É preciso escrever o relatório no disco pra ser gerado. Já tentei algo parecido com esse seu ai e também não funcionou.

:(

Sim. é um pouco mais “chato”…rs

Eu postei um exemplo aki:
http://www.guj.com.br/posts/list/108484.java

anderson.bonavides

danielsb2:
anderson.bonavides:
Pelo que eu pude perceber é que para gerar relatórios web a coisa funciona um pouco diferente. É preciso escrever o relatório no disco pra ser gerado. Já tentei algo parecido com esse seu ai e também não funcionou.

:(

Sim. é um pouco mais “chato”…rs

Eu postei um exemplo aki:
http://www.guj.com.br/posts/list/108484.java

Eu vi seu código mas acho que pra JSF as coisas modificam um pouco até pq não extendemos o HttpServlet. De qualquer forma vou tentar por em prática.

Grato!

Criado 3 de novembro de 2008
Ultima resposta 4 de nov. de 2008
Respostas 6
Participantes 4