Relatorio nao aparece no JAR [resolvido]

7 respostas
Rodrigoguim

Quando eu executo a minha aplicação de dentro do eclipse e peço para gerar o relatório a aplicação mostra o relatorio normalmente…

Porem quando eu gero o .jar e executo por fora do eclipse os relatórios naão aparecem mais… clico para gerar eles e nada acontece…

os .jrxml, .jasper esão todos dentro do meu jar, quando e descompacto aparece eles…

Alguem tem alguma idéia… grato…

7 Respostas

erico_kl

como você faz o acesso ao .jasper?
tente fazer por InputStream aí você passa o caminho diretamente de dentro da aplicação…

Rodrigoguim

Faço da Seguinte forma o acesso ao jrxml

String jr1 = "\\10.1.182.22\Projeto\relatorios\"; JasperCompileManager.compileReportToFile(jr1+"atvtudo.jrxml"); Map<String, String> parametros = hashMap; JasperFillManager.fillReportToFile(jr1+"atvtudo.jasper",parametros,daoUsuario.conectar()); JasperViewer.viewReport(jr1+"atvtudo.jrprint",false, false);

Como funciona esse inputStream?

TheKill

tente usar a primeira opcao do extrat to jar

se for o caso da IDE eclipse

Att. Jonas

T

Crie um pacote no seu projeto para os relatórios
Crie uma classe sem nada dentro desse pacote

Ex.:

public class Relatorio { }

E acesse o relatório dessa forma

JasperFillManager.fillReportToFile(Relatorio.class.getResourceAsStream("atvtudo.jasper"),parametros,daoUsuario.conectar());

Dessa forma ele busca o relatório no mesmo pacote da classe. Não tem como dar erro.

erico_kl
InputStream is = getClass().getResourceAsStream("/reports/relatorio.jasper");

então você passa esse objeto no método fillReport(…) junto com os parâmetros e o DS…

Rodrigoguim

Funcionou!!!

Agradeço Todos que me ajudanram, eu dei uma Organizada no meu MANIFEST.MF…

e FUNCIONOU LEGAL, coloquei na class-path todos os jar que eu precisava no meu relatorio e coloquei, apasta lib no diretorio do meu .jar principal…

Fica ai a dica…

rogeriocasal

thiagow1:
Crie um pacote no seu projeto para os relatórios
Crie uma classe sem nada dentro desse pacote

Ex.:

public class Relatorio { }

E acesse o relatório dessa forma

JasperFillManager.fillReportToFile(Relatorio.class.getResourceAsStream("atvtudo.jasper"),parametros,daoUsuario.conectar());

Dessa forma ele busca o relatório no mesmo pacote da classe. Não tem como dar erro.

Pow, realmente nunca fiz isso show de bola cara parabéns.

Criado 21 de janeiro de 2010
Ultima resposta 29 de mai. de 2010
Respostas 7
Participantes 5