Pular para o conteúdo

NullPointerException ou FileNotFoundException ao executar relatórios com Jasper Reports

Olá!

Muitas pessoas tem dificuldade em utilizar os relatórios feitos no iReport em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos .jasper em sua aplicação para que o Servlet ou o ManagedBean consiga lê-los. Então é bem comum ver  erros como esses:

[sourcecode lang=”java”]net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException[/sourcecode]

[sourcecode lang=”java”]java.lang.NullPointerException
at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
[/sourcecode]

Recomendo colocar os arquivos jasper e/ou jrxml juntos as classes Java e não nos diretórios abaixo de Páginas Web no Netbeans ou Web Content no Eclipse, pois eles podem fica expostos. Não é desejado que os usuários possam baixa os arquivos jasper e/ou jrxml e ficarem fuçando neles.

A figura abaixo mostra o local correto para copiar o arquivo jasper e/ou jrxml no Netbeans. No Eclipse a lógica é a mesma, no lugar de Pacotes de código fontes coloque em Java Resorces: src.

Note que o arquivo jasper e/ou jrxml está no mesmo pacote do GerarRelatorioServlet.java e para obter o InputStream no Servlet eufaço assim getResourceAsStream(“Rel_Precipitacoes.jasper”).

Para ser mais organizado é possível colocar em outro pacote, nesse caso é preciso ajustar o caminho ao jasper com relação ao local do GerarRelatorioServlet.java. No exemplo abaixo o jasper ficou no pacote br.com.furutani.relatorios logo obtemos o InputStream passando esse caminho “../relatorios/Rel_Precipitacoes.jasper” no GerarRelatorioServlet.

O projeto do netbeans com os fontes e bibliotecas do JasperReports podem ser baixados no link:  [Download não encontrado.]

Espero ter ajudado.

Até mais,
Roberto

4 comentários em “NullPointerException ou FileNotFoundException ao executar relatórios com Jasper Reports”

  1. roberto! Parabens! puts, vc salvou meu dia, cara, estava aqui com esse problema, por mais de 2 hrs, puts, ja tinha tentado os caminhso relativos, e absolutos e so conseguir rodar colocando caminho interno, mas nao queria isso, e sim o da aplicacao, assim nao precisa mudar,e achei seu post.
    parabens, por ter compartilhado a dica, realmente deve ajudar muitos por ai.
    abracos.

  2. Pingback: Camilo Lopes – LpJava » Relatório Ireport + JasperReport com Hibernate

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *