Problema com ireport

9 respostas
Nader_Daher

Olá, sempre que usei o ireport usei uma conexao com banco de dados pra gerar o relatório, agora preciso gerar o relatório com JRDataSource, estou a 3 dias sem conseguir, segue o código abaixo

JRDataSource jrds = new JRBeanCollectionDataSource(listSaldo);

            // parametros do relatorio
            HashMap parameters = new HashMap();
            parameters.put("listSaldo", jrds);
            // lendo arquivo jasper
            File reportFile = new File(sc.getRealPath("/Relatorio/rel_saldo.jasper"));

            byte[] bytes = null;
            try {
               

              //  bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, new JREmptyDataSource());
                JasperPrint print = JasperFillManager.fillReport(reportFile.getPath(), parameters,jrds);   // LINHA ONDE OCORRE O ERRO
          
                JasperViewer.viewReport(print, false);
            } catch (Exception e) {
                e.printStackTrace();
                return;
            }
        
            if (bytes != null && bytes.length > 0) {
                response.setContentType("application/pdf");
                response.setContentLength(bytes.length);
                ServletOutputStream ouputStream = response.getOutputStream();
                ouputStream.write(bytes, 0, bytes.length);
                ouputStream.flush();
                ouputStream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

O erro:

java.lang.NullPointerException
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)

A lista não está nula pois já verifiquei, se alguem poder ajudar agradeço.

9 Respostas

A

Oie …

Vc verificou se a sua listSaldo de saldo está realmente preenchida ??

vc está usando SubRelatorios ??

Nader_Daher

oi, a lista está preenchida sim…

A

Vc verificou ser reportFile.getPath() esta null ??

se tiver tenta fazer assim
File reportFile = new File(sc.getRealPath("/Relatorio/rel_saldo.jasper")); 
InputStream input = null;
input = new FileInputStream(file);

JasperPrint print = JasperFillManager.fillReport(input,parameters,jrds);

Só uma coisa eu não entendi pq vc está mandando a sua DataSource por parametro ???

Nader_Daher

Obrigado pela ajuda, fiz o que vc disse mas infelizmente continua o problema…
não entendo o motivo esse erro, aparentemente não tem nada nulo, só os parametros, mas que eu saiba isso não interfere
quanto a passar o Ds como parametro, vi em um exemplo, fiz só pra testar mesmo, já que estava com erro…

A

é relamente o parametro é a unica coisa ali q pode ser nula …

é realmente tá osso esse seu erro …

Existe alguma outra lista dentro dessa listSaldo ??

A

Ah e como estão os objetos que estão sendo colocado na lista …

??

Nader_Daher

como assim como estão os objetos??
eu fiz uma varredura da lista pra ver, e esta td ok…

Nader_Daher

Já pesquisei mt sobre relatorio com JRBeanCollectionDataSource, já mudei o código milhares de vezes, e sempre da nullpointerexception na hora de carregar o relatório, não sei o que fazer mais…

jorginhoskater

verifica em qual versão que você criou o relatório do JasperReport e qual é a versão do .jar que está na sua aplicação, se a versão entre eles forem diferentes vai dar zica, eu lembro que uma vez eu estava mechendo com o jasperReports e estava dando NullPointerException e o problema era este.

Criado 22 de outubro de 2010
Ultima resposta 27 de out. de 2010
Respostas 9
Participantes 3