Relatorios com IReport e JasperReport

16 respostas
anderson.bonavides

Pessoal, estou fazendo minha aplicação com IReport + JasperReport. Porém meu método que chama o relatório não está localizando o arquivo Jasper.

Está gerando uma exceção Exception.

O arquivo jasper está na raiz do projeto.

Segue meu método:

public JasperPrint gerarRelatorioGeralPorInscritos(){ JasperPrint rel = null; try { Connection con = Connect.getConexao(); HashMap map = new HashMap(); String arquivoJasper = "RelatorioGeralPorInscritos.jasper"; rel = JasperFillManager.fillReport(arquivoJasper, map, con); } catch (Exception e) { System.out.println("NÃO FOI POSSIVEL EXIBIR O RELATÓRIO"); e.printStackTrace(); } return rel; }

16 Respostas

Gu1

velhinho onde vc esta colocando o caminho do arquivo jasper?
eu acho que é por isso que ele não esta encontrando.

anderson.bonavides

Sinceramente em lugar nenhum. Os arquivos estão juntos com o código fonte. Tem alguma sugestãao??

Grato!

D

posta o StackTrace para o pessoal dar uma olhada.

anderson.bonavides
java.io.FileNotFoundException: RelatorioGeralPorInscritos.jasper
D

Você moveu para a pasta do seu aplicativo o .jasper ou o .jrxml ?

O .jasper é aquele que vai para o pasta do iReport.

anderson.bonavides

Movi. Eles e econtram na pasta junto com o código fonte da classe que contém este método.

D

Eles não podem ficar na mesma pasta que o código fonte. Coloca eles lá na pasta principal do seu projeto, onde tá o classpath, a pasta src, etc. Deve funcionar.

anderson.bonavides

Você fala a pasta Raiz???

D

Aham. Lá na na pasta workspace/nomeDoSeuProjeto

anderson.bonavides

Infelizmente ainda não funcionou. Continua sem encontrar o arquivo.

:frowning:

De qualquer forma agradeço a atenção.

Gu1

velhinho tenta colocar do jeito que coloquei abaixo e ve se funciona, caso funcionar eu te passo o codigo que pega o caminho do arquivo.

/nomeDoProjeto/arquivo.jasper

desculpa não te passar agora é que não estou na minha maquina.

D

Olá.

Você também pode tentar utilizar as seguintes linhas para resolver o seu problema:

String arquivoJasper = "RelatorioGeralPorInscritos.jasper"; String caminhoJasper = getServletConfig().getServletContext().getRealPath("/relatorios/"+arquivoJasper);
Com essa linha: getServletConfig().getServletContext().getRealPath, você pega a pasta raiz do projeto, aí é só específicar o caminho a partir da raiz, como: b;[/b].

Tenta aí, e me avisa se deu certo. Até.

Gu1

isso isso era isso ai que eu não lembrava…
anderson.bonavides acredito que com esse codigo que o Adriano F. Ronszcka posto fumega…

anderson.bonavides

Cara eu to usando JSF esse método não vai funcionar.

Eu tentei especificar o caminho do windows até o arquivo e gerou o seguinte erro:

java.lang.ExceptionInInitializerError
anderson.bonavides

Lançado na linha: rel = JasperFillManager.fillReport(arquivoJasper, map, con);

String gerarRelatorioGeralPorInscritos()throws Exception{
		JasperPrint rel = null;
		try {
                        Connection con = Connect.getConexao();
			HashMap map = new HashMap();
                        String arquivoJasper =  "C:/tools/projovem/projovem/RelatorioGeralPorInscritos.jasper";
                        
 			rel = JasperFillManager.fillReport(arquivoJasper, map, con);
                        JasperViewer.viewReport(rel, false);
		} catch (Exception e) {
                        System.out.println("NÃO FOI POSSIVEL EXIBIR O RELATÓRIO");
			e.printStackTrace();
		}
		return "Sucesso";
	}
L

tente usar isto para recuperar o caminho correto da pasta onde estao os relatorios .

private static final String DATA_PATH = "/WEB-INF/classes/com/Lgweb/Tcc/Relatorios/ ;  //caminho para o relatorio
	public String loadExternalPath(){
		 FacesContext aFacesContext = FacesContext.getCurrentInstance();   
		 ServletContext sc = (ServletContext)aFacesContext.getExternalContext().getContext();  
		 String filepath = sc.getContextPath()+DATA_PATH;	       
	     return filepath;
		
	}
Criado 24 de outubro de 2008
Ultima resposta 24 de out. de 2008
Respostas 16
Participantes 5