[iReport] NullPointerException ao gerar PDF [RESOLVIDO]

9 respostas
F

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

9 Respostas

F

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.

M

Boa noite,

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

Obrigado.

F

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.

M

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.

F

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.

M

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.

F

Olá Mateus!

Que bom que funcionou!

Não entendi o que você quis dizer com

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

Abçs

Marco A.

M

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.

S

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!

Criado 28 de julho de 2010
Ultima resposta 2 de ago. de 2013
Respostas 9
Participantes 3