Pessoal consegui desenvolver meu sistema, ele estava usando o jasper e o ireport pra gerar relatório e estava fazendo isso sem problema. O problema foi quando eu fiz um .jar pra meu sistema: MD.jar, tudo roda direitinho, só quando vai gerar relatório que ele não gera nada, coloquei os arquivos .jar do ireport etc no meu MD.jar , configurei o classpath de várias formas , mas não deu , alguém já teve uma experiência com isso que possa me ajudar?
como tu ta carregando os .jasper?
eu carrego deste jeito e funciona de dentro do .jar
URL url = getClass().getResource(reportFile); //apenas o nome do arquivo fisico
if (url == null)
return null;
InputStream is = url.openStream();
Esta classe tem como funcao carregar estes relatorios.
no caso… os meu .jasper estao dentro do mesmo pacote da classe.
ah… o variavel reportFile eh o nome fisico do report
Não entendi direito , mas não sei se eu me expliquei legal tb.
O problema que to tendo é que não é reconhecido os .jar do ireport e do jasper , eu coloquei os .jar em vários lugares(dentro do meu .jar principal , do sistema;coloquei um diretório antes; em vários diretórios; alterei o classpath várias vezes e não adiantou nada)
Mas isso que vc explicou eu tb não entendi nada, daria pra vc dar um exemplo na prática, com os próprios nomes dos arquivos?Mas vc entendeu o meu problema? Porque ás vezes vc pode ter entendido de outra forma.
hmmmm…
na verdade eu ainda nao entendi o teu problema
vc tah usando em ambiente web ou desktop?
desktop
e como vc chama os arquivos .jasper, vc passa o caminho completo do arquivo?
Nao passo o caminho inteiro, faco o seguinte:
os meus relatorios .jasper (q estao dentro do jar) estao no pacote
com.minhaempresa.report.jasper
Crio uma classe, por exemplo, Report em
com.minhaempresa.report
Esta classe por exemplo, tera um metodo para mostra o relatorio na tela:
public void showReport(String reportFile, Map param) {
try {
URL url = getClass().getResource("jasper/" + reportFile);
if (url == null)
return null;
InputStream is = url.openStream();
JasperPrint jp = JasperFillManager.fillReport(is, param, connection); // aqui vai a tua conexao com o bando
if (jp == null)
return;
JasperViewer.viewReport(jp, false);
} catch(Exception ex) {
ex.printStackTrace();
}
dai qdo tu quiser ver o relatorio faz
// passa o nome do arquivo fisico, e os parametros
Report r = new Report();
r.showReport("relatorio.jasper", null);
blz?
eu uso de forma parecida, eh em ambiente web, mas axo q a lógica eh a mesma.
eu tenho um jar com as classes da minha app.
e tenho um outro jar, somente com os arquivos .jasper, mas dentro do jar eles não estão em nenhum diretório.
coloco os dois no classpath e chamo da msm forma q vc, e funciona na boa.
Show de fabiofalciPJ funcionou perfeito !!!Valewwwwwwwwwwwwwww