[iReport] NullPointerException ao gerar PDF [RESOLVIDO]

Olá pessoal;
Saudações!

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.

Obrigado!

Marco Aurélio

Pessoal…

Dois pequenos erros:

  1. A url de conexão do relatório estava diferente da url de conexão do meu método getConexao();
  2. Ao atualizar o IReport, havia algumas bibliotecas antigas no meu classpath, exclui e deixei os jars somente na aplicação.

Obrigado!

Marco A.

Boa noite,

Quais foram os Jars, que você utilizou no seu projeto??

Obrigado.

Olá Mateus;

os JARS foram:

Commons-beansutil;
Commons-codec;
Commons-collection;
commons-digester;
commons-httpclient;
commons-javaflow;
commons-logging;
groovy-all;
iText
e
jasperreports.

Att.

Marco A.

Bom dia fanama,

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.

Obrigado.

Olá Mateus;

Como pode perceber, é exatamente o mesmo erro que tive há um tempo atrás e descrito neste tópico.

A solução que achei na época foi, como descrita no tópico, excluir todos os meus JARS (java/jre/lib/ext) e deixá-los somente na lib da aplicação.

Att

Marco Aurélio.

Valeu Marco, funcionou perfeitamente. Brigadão. :smiley:

Só mais uma dúvida:

Ele está exibindo o relatório, porém no lado servidor.

Como faço para ser exibido no lado cliente?
Tem algum exemplo?

Obrigado.

Olá Mateus!

Que bom que funcionou!

Não entendi o que você quis dizer com [quote]Ele está exibindo o relatório, porém no lado servidor. [/quote]

Abçs

Marco A.

Bom dia,

É porque estou falando de uma aplicação web Cliente/Servidor.

Só estava conseguindo exibir o relatorio no lado cliente, mas ja consegui fazer o brownser abrir o pdf.

Você sabe quais são os Jars necessários para exibição de gráficos?

Obrigado.

Marco Aurélio

Bom dia amigo!

Apesar de antigo, este post me livrou de uma dor de cabeça:

[color=red]java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) [/color]

Realmente era só atualizar as bibliotecas na aplicação!

Ufaaa!

Deus te abençoe!