Pessoal, quando eu executo o programa pelo netbeans ele chama meu relatório do ireport normal, perfeito!
porem quando uso o .jar da pasta dist, ele nao chama, até por que o caminho não é o mesmo e o relatório não está junto da pasta dist, como faço nesse caso? segue meu código que chama o relatório
[quote=rodolpho.netto]Pessoal, quando eu executo o programa pelo netbeans ele chama meu relatório do ireport normal, perfeito!
porem quando uso o .jar da pasta dist, ele nao chama, até por que o caminho não é o mesmo e o relatório não está junto da pasta dist, como faço nesse caso? segue meu código que chama o relatório
Você deve empacotar o seu jasper junto com o jar e ler a partir dele…
O fillReport aceita um InputStream também, então:
InputStream is = getClass().getResourceAsStream("/relatorio/rel_tit.jasper");
JasperPrint jp = JasperFillManager.fillReport(is, parametros, conexao.getYamadaConnection());
Evite passar recursos que você irá disponibilizar para o cliente (tal como imagens, relatorios, sons…) como String direto, pois geralmente a API que você utilizar irá ler como caminho absoluto… as libs do Jasper são um exemplo…
[quote=erico_kl]Você deve empacotar o seu jasper junto com o jar e ler a partir dele…
O fillReport aceita um InputStream também, então:
InputStream is = getClass().getResourceAsStream("/relatorio/rel_tit.jasper");
JasperPrint jp = JasperFillManager.fillReport(is, parametros, conexao.getYamadaConnection());
Evite passar recursos que você irá disponibilizar para o cliente (tal como imagens, relatorios, sons…) como String direto, pois geralmente a API que você utilizar irá ler como caminho absoluto… as libs do Jasper são um exemplo…[/quote]
Usar os relatórios dentro da jar nao acredito que seja uma boa ideia. Com os relatorios fora do jar, voce pode modificar e apenas atualizar um relatorio, sem ser necessário ficar gerando o jar toda hora.
Sobre a sua dúvida, faça como o amigo therodrigoagostin disse. Você apenas terá que ter duas pastas yamada3. Uma para o seu projeto do netbeans e outra para a pasta dist. Pois quando voce executa a partir do Netbeans, ele está pegando o caminho do Netbeans, e quando executa a pastir da dist, pega o caminho da dist.
Se quiser fazer o teste, cria um File file = new File("") e de um JOptionPane com o caminho do arquivo. Ele vai pegar o caminho do proprio arquivo, então você verá a diferença…
E cada vez que você atualizar terá que ir em cada micro do cliente e atualizar o relatório? Não vejo viabilidade de fazer isso… então a melhor solução é colocar no jar… no momento que um relatório é atualizado, todos os clientes estarão (imaginando um cenário com WebStart, por exemplo)
Pense em um sistema com 30 clientes que acessam o sistema em um jar único disponibilizado em um servidor e distribuido via WebStart, como você faria se deixasse os jasper fora?