olá… estou com um pequeno problema com o iReport…
tenho um package no meu projeto chamado “reports” onde estou colocando os meus relatórios… mas quando mando executar com as linhas abaixo, da erro de arquivo não encontrado… só consigo fazer com que funcione se eu colocar todo o diretório, por ex, “c:/meuprojeto/reports/ListaMaterial.jasper”
JasperFillManager.fillReportToFile("/reports/ListaMaterial.jasper", parameters, jrRS);
JasperViewer.viewReport( "/reports/ListaMaterial.jrprint", false );
alguém sabe como resolver isso?
obrigado
Olá,
tente passar o objeto file ou URL para estes métodos que tenho quase certeza que eles aceitam. Faça assim:
URL jasper = this.getClass().getResource("/reports/ListaMaterial.jasper");
JasperFillManager.fillReportToFile(jasper, parameters, jrRS);
URL jrprint = this.getClass().getResource("/reports/ListaMaterial.jrprint");
JasperViewer.viewReport(jrprint, false );
Bom acredito que resolva seu problema.
olá…
funcionou… mas tive q fazer uma alteração pq o método fillReportTofile recebe no primeiro parâmetro uma string com o caminho do arquivo ou o arquivo…
URL jasper = this.getClass().getResource("/reports/ListaMaterial.jasper");
JasperFillManager.fillReportToFile(jasper.getFile(), parameters, jrRS);
URL jrprint = this.getClass().getResource("/reports/ListaMaterial.jrprint");
JasperViewer.viewReport(jrprint.getFile(), false, false);
ou
URL jasper = this.getClass().getResource("/reports/ListaMaterial.jasper");
JasperFillManager.fillReportToFile(jasper.getPath(), parameters, jrRS);
URL jrprint = this.getClass().getResource("/reports/ListaMaterial.jrprint");
JasperViewer.viewReport(jrprint.getPath(), false, false);
mas agora tenho uma outra dúvida…
teria como, após ter gerado o .jar do meu programa, ele buscar o arquivo dentro do .jar sem precisar ter uma pasta externa com os relatórios?
pq da forma que está, tenho q ter dentro do diretório onde está o .jar uma pasta “report” com o meu relatório dentro…
ex:
c:/meuprograma/meuprograma.jar
c:/meuprograma/reports/ListaMaterial.jasper
obrigado!
Olá,
Da forma que está funciona do mesma forma.
:joia:
não funciona… esta dando erro de arquivo não encontra ao executar… o .jasper e o .jrprint estão dentro do .jar… segue o erro:
[color=red]java.io.FileNotFoundException: file:\C:\meuprojeto\reports\ListaMaterial.jasper[/color]
isso ocorre após gerar o .jar… se executar pelo eclipse funciona sem problema…
obrigado!
Sei que este post é antigo mas vou deixar aqui como eu consegui fazer, para que possa ajudar outra pessoa que passe por aqui no futuro.
// pego a url do arquivo jasper
java.net.URL url = getClass().getResource("/br/org/projeto/relatorios/relatorio1.jasper");
try {
InputStream fs;
fs = (InputStream) url.getContent();
//implementação da interface JRDataSource para DataSource ResultSet
JRResultSetDataSource jrRS = new JRResultSetDataSource( itemDao.getRs() );
//preenchendo o relatorio sendo que jrRS é um resultset
JasperPrint impressao = JasperFillManager.fillReport(fs, null, jrRS);
JasperViewer viewer = new JasperViewer(impressao, false);
viewer.setVisible(true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}