Estou com um probleminha e gostaria de contar com a ajuda dos colegas.
tenho o seguinte método:
public void gerarRelatorio(String relatorio, String _param1, String _param2, String _param3, HttpServletRequest request, HttpServletResponse response) throws JRException
{
HashMap parametros = new HashMap();
parametros.put("parDataIni", _param1);
parametros.put("parDataFim", _param2);
if(_param3.length()!=0){
parametros.put("codigo", _param3);
}
DAO dao = new DAO();
// Aqui ocorre o erro
byte [] pdf = JasperRunManager.runReportToPdf(relatorio, parametros, dao.getConnection());
mostrarRelatorio(pdf, response);
}
Quando vou gerar o relatório em PDF para depois ser exibido no browser estou recebendo algo como nulo, vejam o erro:
SEVERE: Servlet.service() for servlet Relats threw exception
java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:59)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:203)
at br.com.grimbergs.Relats.gerarRelatorio(Relats.java:54)
at br.com.grimbergs.Relats.service(Relats.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Poderiam me ajudar a resolver?
P.S: Estava funcionando, tive que formatar a maquina, restaurar o projeto e instalei o iReport com uma vresão mais recente. Me certifiquei que o relatório está funcionando. Até vi algumas mensagens na net dizendo que deveria salvar o PDF em algum lugar para o usuário fazer o download, mas não sei como fazer isso.
Eu coloquei todos os jars necessários, referentes ao ireport 3.7.5. Quando eu rodo em desktop funciona. Porém ao tentar rodar na web, através de uma servlet acontece o seguinte erro:
java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)
at teste.RelatorioEstoqueAtual.geraRelatorio(RelatorioEstoqueAtual.java:48)
at action.relatorios.EstoqueAtual.doPost(EstoqueAtual.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
O estranho é porque se for em desktop, funciona perfeitamente.