Boa tarde pessoal,
Estou com um problema e acredito que vocês conseguem me ajudar. Consigo ao executar meu Projeto no Netbeans trazer os relatórios sem problemas, da mesma forma ao gerar a Dist e executá-la (No Computador onde está o projeto). Se eu levar essa Dist para outra máquina (Cliente) já não consigo abrir… Pesquisei muito sobre isso e tenho a certeza que não é problema referente à caminhos de arquivos(Até porque neste computador funciona). Meu relatório contém Imagem e pesquisando sobre isso ouvir falar de um Parâmetro que deve ser usado, algum de vocês podem me ajudar?
Você tem que por os relatórios na raiz do programa e usar o caminho.
Exemplo
JasperReport relatorio = (JasperReport) JRLoader.loadObject(getClass().getClassLoader().getResource("Relatorio/RelAchados.jasper"))
;
esta no pacote relatorio e o nome do arquivo é RelAchados.jasper
Abraç
Não conseguir…
int confirma = JOptionPane.showConfirmDialog(null, "Confirma a visualização do Relatório?", "Atenção", JOptionPane.YES_NO_OPTION);
if(confirma == JOptionPane.YES_OPTION){
try {
InputStream caminho = getClass().getResourceAsStream("/Relatorios/Rel_Clientes.jasper");
JasperPrint print = JasperFillManager.fillReport(caminho, null, conexao);
JasperViewer.viewReport(print, false);
} catch (JRException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
assim está o meu, dentro do Pacote Relatorios.
Muito estranho porque quando eu gero a Dist, tudo funciona perfeito neste computador… mas ao passar para outra máquina não abre os relatórios. Por esse motivo descartei que seria algo relacionado a caminhos sabe
Posta o erro que dá na outra máquina, mas, quase 100% que é o caminho…
Tira a barra deixa assim
("Relatorios/Rel_Clientes.jasper")
Vou tentar explicar digitando o porque de eu achar que não seja caminho.
Ao executar o projeto na IDE tudo funciona perfeitamente… (Até aqui blz)
Ao gerar a Dist e colocar no C: por exemplo e executá-la também funciona perfeitamente a chamada dos relatórios… (NESTE COMPUTADOR)
Se eu copiar essa mesma pasta Dist e colocar em outro computador não funciona… me explica essa lógica? kkk Até cheguei a pensar que seria preciso instalar algum programa nesse computador onde não executou talvez.
Você sabe me dizer se conter imagens dentro do .Jasper/.Jrxml é preciso de alguma chamada no código? Eu acredito que não, visando que no ireport você compila o arquivo né… já ficaria tudo ‘Compilado’
Vc está copiando todas as pastas né? do seu projeto inteiro, não é apenas a dist… os relatórios normalmente ficam na src se você copiar apenas a dist para outro pc ela não vai encontrar os relatórios
Não existe mensagens de erro, simplesmente não abre ao mandar abrir.
Acontece o seguinte, eu tenho 3 chamadas de Relatórios .Jasper que estão localizadas dentro de um Pacote do Projeto chamado Relatorios.
E mais 2 chamadas de Relatórios .Jrxml que estão localizadas na raiz do projeto, então ao gerar a Dist eu preciso copiar a pasta Relatorios da raiz que contem estes 2(DOIS) e deixar dentro dela.
Acontece que ao executar o .Jar neste computador ele funciona, faz as chamadas destes relatórios e tudo mais sem erros… mas ao executar esse .Jar em outro computador ele não faz essas chamadas. Muito estranho
Então me explica por favor, eu gero a Dist e MOVO somente ela (DIST) para outra pasta (FORA DO PROJETO) e tudo funciona, e ao colocar somente ela (DIST) em outro Computador não funciona…
Lembrando… FORA DO PROJETO
Já tentou? não deu certo?
Vou realizar esse teste agora.
Bom, bem como eu imaginava não deu certo.
Não justifica ter que colocar o projeto inteiro e sim somente a Dist, ao compilar o projeto todos os pacotes, bibliotecas, etc são compiladas para o .Jar sendo não necessário você mandar junto a aplicação o Código Fonte.
Enfim, como eu utilizei imagens dentro do iReport, vou tentar enviar essa mesma imagem junto ao projeto para saber se pode ser isso.
Uma pergunta, o Cliente que vai receber a aplicação Java SE precisa de ter algum software específico instalado para que a aplicação possa funcionar? Tipo requisitos
Que pena então, quando o meu não estava funcionando eram duas coisas:
1- Não tinha colocado a imagens como parâmetro.
2- O caminho não estava acessível pelo outro pc.
Desculpa não conseguir te ajudar… Boa sorte.
Então amigo, como você coloca a imagem como parâmetro? Pode ser isso, na verdade acho que seja isso
Dá uma olhada nesse tópico, não tem erro se for esse o problema.
Acho que seja
Abrços
Também acredito que seja, vou dar uma olhada. De qualquer forma, muito obrigado!
try{
conexao = ModuloConexao.conector();
// HashMap imp = new HashMap();
// imp.put("filtro",Integer.parseInt(TxtData.getText()));
Map<String, Object> imp = new java.util.HashMap<>(1);
//imp = new Map<String, Object>;
imp.put("filtro", txtDatinha.getText()); //Filtro paramentro dentro do relatorio
JasperReport relatorio = (JasperReport) JRLoader.loadObject(getClass().getClassLoader().getResource("Relatorio/RelAchados.jasper"));
JasperPrint print = JasperFillManager.fillReport(relatorio, imp, conexao);
JasperViewer.viewReport(print, false);
}catch(Exception e)
{
JOptionPane.showInputDialog(null, e);
}
}
É só um exemplo, ai você modifica