[RESOLVIDO] JSF + Jasper = FileNotFoundException

6 respostas
R

Olá Galera…

Estou tantando gerar pelo meu sistema um PDF mas esta dificil…
Ao tentar pegar o arquivo “.jasper” para gerar o relatorio o meu MBean nao acha utilizando o seguinte codigo:

ServletContext sc = (ServletContext) JSFUtil.getExternalContext().getContext();

  String      relPath = sc.getRealPath("/relatorios/relatorioTeste.jasper");

  Map parameters = new HashMap();

  JasperPrint print = JasperFillManager.fillReport(relPath, parameters, Ds);

Dá o seguinte erro:
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: C:\jboss-4.2.3.GA\server\default.\deploy\ProjeTeste.war\relatorios\relatorioTeste.jasper

Verificando nos outros topicos, tambem ja testei os seguinte variantes:

InputStream relName = JSFUtil.getExternalContext().getResourceAsStream("/relatorios/relatorioTeste.jasper");
  InputStream relName1 = JSFUtil.getExternalContext().getResourceAsStream("../relatorios/relatorioTeste.jasper");
  InputStream relName2 = JSFUtil.getExternalContext().getResourceAsStream("./relatorios/relatorioTeste.jasper");
  InputStream relName3 = JSFUtil.getExternalContext().getResourceAsStream("relatorios/relatorioTeste.jasper");
  InputStream relName4 = JSFUtil.getExternalContext().getResourceAsStream ("classpath:/WEB-INF/relatorios/relatorioTeste.jasper"); -->>> Aqui eu criei uma pasta "relatorios" abaixo do src.....
  ObjectInputStream jasperStream = (ObjectInputStream) this.getClass().getClassLoader().getSystemResourceAsStream("relatorios/relatorioTeste.jasper");
  ObjectInputStream jasperStream1 = (ObjectInputStream) this.getClass().getClassLoader().getSystemResourceAsStream("../relatorios/relatorioTeste.jasper");
  ObjectInputStream jasperStream2 = (ObjectInputStream) this.getClass().getClassLoader().getSystemResourceAsStream("./relatorios/relatorioTeste.jasper");
  ObjectInputStream jasperStream3 = (ObjectInputStream) this.getClass().getClassLoader().getSystemResourceAsStream("/relatorios/relatorioTeste.jasper");

Todas sempre retornam “null”

No meu projeto a pasta relatorios esta em “ProjeTeste>WebContent>relatorios>*.jasper”

Estou utilizando JSF 1.2, Facelets, Spring

Alguem tem alguma ideia ?

Obrigado,
Rodrigo

6 Respostas

furutani

Voce está colocando os .jasper dentro do war?
Ao abrir o caminho C:\jboss-4.2.3.GA\server\default.\deploy\ProjeTeste.war\relatorios\ é listados os arquivos jasper?

vi-gb

oi rlether, vi o endereco dos seus relatorios e fiquei em duvida.
É errado deixar os relatorios em um pacote juntos com os arquivos .class?
Obrigada

R

furutani:
Voce está colocando os .jasper dentro do war?
Ao abrir o caminho C:\jboss-4.2.3.GA\server\default.\deploy\ProjeTeste.war\relatorios\ é listados os arquivos jasper?

Sim aparece…

Mas na realidade acho que o erro esta no endereço que ele pega pois no caminho não tem o “.” na minha maqui é assim “C:\jboss-4.2.3.GA\server\default\deploy\ProjeTeste.war\relatorios”…
Pq sera que ao pegar vem com o ‘.’ ???

[]´s

R

vi-gb:
oi rlether, vi o endereco dos seus relatorios e fiquei em duvida.
É errado deixar os relatorios em um pacote juntos com os arquivos .class?
Obrigada

Olha nunca deixei junto com os arquivos .class e sim uma pasta dentro do “WebContent”, acho que não teria problema…
Ali eu estava fazendo os testes pq não estou conseguindo pegar o arquivo .jasper

[]´s

R

furutani:
Voce está colocando os .jasper dentro do war?
Ao abrir o caminho C:\jboss-4.2.3.GA\server\default.\deploy\ProjeTeste.war\relatorios\ é listados os arquivos jasper?

Olha que coisa de loko…
Criei uma pasta “relatorio” junto com o codigo e busquei assim “String relPath = sc.getRealPath(“WEB-INF/classes/br/com/projeto/relatorios/relatorioTeste.jasper”);” e funcionou…Muitro estranho…

Agora uma outra pergunta: Como eu faço para meu relatorio abrir em uma nova pagina deixando a pagina chamada como esta ?

Obrigado,
Rodrigo

vi-gb

<h:commandButton value="#{msgs.relatorio}" action="#{meuBean.geraRelatorio}" onclick="this.form.target='_blank'" />

No onclick vc coloca o target como _blank que ele abre em outra pagina ou aba.

Criado 9 de novembro de 2009
Ultima resposta 11 de nov. de 2009
Respostas 6
Participantes 3