[RESOLVIDO] Usando iReport e NetBeans para gerar relatórios

7 respostas
GeorgeSamarino

Pessoal, boa noite.
Estou começando a utilizar o iReport com o NetBeans e estou com um problema. Estou tetando gerar um relatório sem filtro. Apenas chamando para verificar se aparece o relatório normalmente.
Até ai tudo bem. Ele chega a abrir o JasperViewer, mas não aparece o meu relatório. Fica em branco.
Estou usando Java Web. Segue abaixo o meu Servlet para que possam me ajudar:

request.setCharacterEncoding("UTF-8");
    HttpSession sessao = request.getSession();
    String modeloRelatorio = request.getParameter("modeloRelatorio");

    if (modeloRelatorio.equals("modelo1")) {
        
        Connection con = ConnectionFactory.getConnection();
        String src = "modelosDeRelatorio\\RelatorioTeste.jasper";
        
        JasperPrint jasperPrint = null;
        
        try {
            jasperPrint = JasperFillManager.fillReport(src, null, con);
        } catch (JRException ex) {
            Logger.getLogger(RelatorioRiscoController.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        JasperViewer view = new JasperViewer(jasperPrint, false);
        view.setVisible(true);
        request.getRequestDispatcher("JnlModeloRelatoriosRisco.jsp").forward(request, response);

Tela do JasperViewer:

Caminho do meu arquivo .jasper: C:\Users\georg\Documents\NetBeansProjects\HistoryRisk\web\modelosDeRelatorio

Desde já agradeço.
Abraços!

7 Respostas

Rodrigo_Void

Bom dia,
JasperViewer, para web?

Debuga para ver se realmente vem dados, parece que apenas não trouxe dados. Tem uma opção que vc pode marcar pra ele exibir em branco se não trouxe dados: When No Data Type = All Sections No Detail
E não deu nenhum erro no console?
Dica: não use sql ou qualquer acesso a banco direto do relatório, faça isso pela aplicação e mande apenas os dados para ele.

GeorgeSamarino

Rodrigo, boa noite.
Desculpe pela demora, mas alterei algumas questões e agora está dando erro. Segue abaixo o código:

request.setCharacterEncoding(“UTF-8”);
HttpSession sessao = request.getSession();

response.setHeader("Cache-control", "no-cache");
    response.setHeader("Pragma", "no-cache");
    response.setDateHeader("Expires", 0);
    response.setContentType("Application/pdf");
    
    
    String modeloRelatorio = request.getParameter("modeloRelatorio");
    
    
    if (modeloRelatorio.equals("modelo1")) {

        try {

            ServletOutputStream saida = response.getOutputStream();
            Connection con = ConnectionFactory.getConnection();
            //String src = "modelosDeRelatorio/RelatorioTeste.jasper";

            
            JasperReport reporte = (JasperReport) JRLoader.loadObjectFromFile("./modelosDeRelatorio/RelatorioTeste.jasper");
            JasperPrint jPrint = JasperFillManager.fillReport(reporte, null, con);
            JRExporter exportar = new JRPdfExporter();
            exportar.setParameter(JRExporterParameter.JASPER_PRINT, jPrint);
            exportar.setParameter(JRExporterParameter.OUTPUT_STREAM, saida);
            exportar.exportReport();

        }catch (JRException ex) {
            Logger.getLogger(RelatorioRiscoController.class.getName()).log(Level.SEVERE, null, ex);
        }
        //request.getRequestDispatcher("JnlModeloRelatoriosRisco.jsp").forward(request, response);
        
        
        //request.getRequestDispatcher("JnlModeloRelatoriosRisco.jsp").forward(request, response);
    }

Rodrigo_Void

Ok, mas este erro no navegador diz tanto quanto está ai: “Deu erro!”. Vc precisa olhar o stacktrace no log se quiser ver a causa.

GeorgeSamarino
Rodrigo,

Olhei no log e deu o seguinte erro:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: \modelosDeRelatorio\RelatorioTeste.jasper

at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:114)

at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:103)

at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromFile(JRLoader.java:94)

at br.cesjf.RelatorioController.RelatorioRiscoController.doPost(RelatorioRiscoController.java:55)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at br.cesjf.util.FilterSession.doFilter(FilterSession.java:99)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

Caused by: java.io.FileNotFoundException: \modelosDeRelatorio\RelatorioTeste.jasper

 33 more

Já tentei alterar o caminho do arquivo e ainda continua :frowning:

Rodrigo_Void

O fato é que o problema é o caminho do arquivo. Não tenho muito oq dizer pq não conheço sua estrutura. Se não consegue acertar com caminho relativo como estas fazendo usa absoluto C:\adada\sdfsf

GeorgeSamarino

Rodrigo,
Consegui resolvendo utilizando o caminho completo.

JasperReport reporte = (JasperReport) JRLoader.loadObjectFromFile(“C:\Users\georg\Documents\Modelos de relatório do iReport\RelatorioPlanejamentoGerenciamentoRisco2.jasper”);

A questão é o seguinte. Quando subo o meu arquivo para o meu servidor ele não encontra o arquivo. Segue abaixo minha estrutura:


GeorgeSamarino

Consegui resolver. Alterei a forma de chamar o meu arquivo e alterei o diretório inserindo ele na mesma pasta que o meu Servlet. Segue abaixo a forma que inseri:

JasperReport reporte = (JasperReport) JRLoader.loadObject(getClass().getResource("/br/cesjf/RelatorioController/RelatorioPlanejamentoGerenciamentoRisco.jasper"));

Muito Obrigado pelas dicas @Rodrigo_Void.
Abs,

Criado 1 de outubro de 2017
Ultima resposta 19 de out. de 2017
Respostas 7
Participantes 2