getRealPath retorna NULL

6 respostas
R
> String separador = System.getProperty("file.separator");
> ServletContext servletContext = request.getSession().getServletContext();
> String caminhoRelatorio = servletContext.getRealPath("/lqa" + separador + "rp" + separador + "RelatorioAnual.jasper");
> 			
> String caminhoImagens[] = new String[2];
> caminhoImagens[0] = servletContext.getRealPath("/lqa" + separador + "rp" + separador + "SISTEMA_CONVENCIONAL.jpg");
> caminhoImagens[1] = servletContext.getRealPath("/lqa" + separador + "rp" + separador + "SISTEMA_POCO_PROFUNDO.jpg");

Prezados, sou novato na area, e estou com uma duvida quanto ao Caminho do Relatório.
O código acima, aponta o caminho para apresentar o Relatório. A questão é que quando rodo a aplicação em LocalHost, a aplicação funciona e o relatório é gerado. Quando faço a publicação no servidor, o relatório é gerado em branco! Já tentei retirar a “/” do “/lqa” e o “servletContext” retorna null.
O “separator” do codigo faz o papel da “/” - Ja tentei colocando o caminho inteiro; substituindo o “/lqa” por "separator + “lqa” e nada!
Alguém pode me ajudar a solucionar tal problema. Como fazer funcionar e abrir e relatório também no servidor.

6 Respostas

A

Tente utilizar o .getResource().

Exemplo: arquivo = getClass().getResource("/Relatorios/Relatorio.jasper");

att.

Sandro_Machado

tente

File arquivo = new File("Relatorio.jasper");
        String diretorio = arquivo.getAbsolutePath());
R

Onde eu incluo isso ai??
Antes ou depois do codigo acima citado? ou substituo algum trecho?

Sandro_Machado

Tenta Assim, ele pega o relatorio que está no diretorio raiz do projeto e retorna o caminho absoluto até ele.

File arquivo = new File("RelatorioAnual.jasper");
         String caminhoRelatorio = arquivo.getAbsolutePath());
         String caminhoImagens[] = new String[2];
         caminhoImagens[0] = servletContext.getRealPath("/lqa" + separador + "rp" + separador + "SISTEMA_CONVENCIONAL.jpg");
         caminhoImagens[1] = servletContext.getRealPath("/lqa" + separador + "rp" + separador + "SISTEMA_POCO_PROFUNDO.jpg");
R

Obrigado Sandro, mas não funcionou.
No ambiente Local(LocalHost) o arquivo é gerado e aberto.

Quando eu publico no servidor, o arquivo não abre… E é salvo contendo 0 bytes.

O caminho que a aplicação me retorna foi:
Caminho Diretorio: D:\desenv\eclipse\RelatorioAnual.jasper
Caminho Relatorio: D:\desenv\apache-tomcat-8.0.24\webapps\prt\lqa\rp\RelatorioAnual.jasper
Caminho Imagens0: D:\desenv\apache-tomcat-8.0.24\webapps\prt\lqa\rp\SISTEMA_CONVENCIONAL.jpg
Caminho Imagens1: D:\desenv\apache-tomcat-8.0.24\webapps\prt\lqa\rp\SISTEMA_POCO_PROFUNDO.jpg

Sandro_Machado

tem que ver qual o caminho o arquivo.getAbsolutePath()); está te retornando, se é o local realmente onde se localiza o arquivo de relatorio.

vamos supor que o caminho do teu projeto for d:\desenv

na forma que te passei ele vai te retornar

D:\desenv\RelatorioAnual.jasper

agora se você quer abrir no D:\desenv\eclipse\RelatorioAnual.jasper

tem que fazer

File arquivo = new File("eclipse\\RelatorioAnual.jasper");
Criado 24 de fevereiro de 2016
Ultima resposta 25 de fev. de 2016
Respostas 6
Participantes 3