Relatório Abre no NetBeans, porém, não abre no executável .jar (Resolvido)

6 respostas
java
Elivelton_Oliveira

Já fiz de tudo…mas não consigo resolver…meu relatório não abre pelo executável apenas no NetBeans. Ao executar ele pelo CMD ele dá esse erro:
ERRO: java.io.FileNotFoundException: file:\C:\Users\Administrator\Documen
ema_Controle\dist\Sistema_Controle.jar!\br\com\relatorios\RelMapa.jasper

Já adicionei todas as lib no ClassPath e ainda não resolveu.

6 Respostas

darlan_machado

Não precisa ficar abrindo vários tópicos para o mesmo problema.
Os links que te passei trabalham da maneira como eu sugeri, usando caminho relativo.
Este projeto está no githuib? Consegue compartilhar ele?

Elivelton_Oliveira

Cara, estou desesperado! Mas enfim…

darlan_machado

E o projeto? É maven? Está no github? Sem vê-lo, impossível prosseguir.

Elivelton_Oliveira

Não está em nenhum desses. eu tenho quase certeza que o problema está na minha Classe, só não estou conseguindo enxergar. O projeto é da empresa, não posso disponibilizar assim. Não me conformo que essa classe funciona de um jeito e de outro não. Mas de qualquer forma, valeu mesmo pela força, ajudou muito!

Elivelton_Oliveira

Estou tentando dessa forma, mas está dando erro no meu botão imprimir

public void gerarRelatorio(HashMap parametros, String nomeRelatorioJasper) {

try {

JasperPrint relatorio = null;

JasperReport jasperReport = null;

InputStream jasperFile = Thread.currentThread().getClass().getResourceAsStream("/br/com/relatorios" + nomeRelatorioJasper + .jasper);

jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);

relatorio = JasperFillManager.fillReport(jasperReport, parametros, this.connection = new ConnectionFactory().getConnection());

JasperViewer viewer = new JasperViewer(relatorio, false);

viewer.setTitle(Relatório);

viewer.setVisible(true);

viewer.toFront();

} catch (JRException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

}
botão imprimir

linha que está dando erro:

String nomeRelatorioJasper = RelMapa;

String file = new RelatorioService().gerarRelatorio(params, nomeRelatorioJasper);
Elivelton_Oliveira

Consegui resolver:

Mudei minha classe, sem transformar para PDF:

public String gerarRelatorio(HashMap parametros, String nomeRelatorioJasper) {

try {

JasperPrint relatorio = null;

JasperReport jasperReport = null;

InputStream jasperFile = Thread.currentThread().getClass().getResourceAsStream("/br/com/relatorios/" + nomeRelatorioJasper + .jasper);

jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);

relatorio = JasperFillManager.fillReport(jasperReport, parametros, this.connection = new ConnectionFactory().getConnection());

JasperViewer viewer = new JasperViewer(relatorio, false);

viewer.setVisible(true);

viewer.toFront();

} catch (JRException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

return nomeRelatorioJasper;

}

E no botão ficou desta forma:

try{

//Lista com os parametros para o relátorio

HashMap params = new HashMap<>();

String nomeRelatorioJasper = RelMapa;

//Passândo parâmetros e convertendo o dados pra ser compativel - Parâmetros são gerados no relatório.jasper

params.put(data_mapVei, Data_inicial.getText());

params.put(data_mapChe, Data_Final.getText());

params.put(placa_map, txt_placa.getText());
//Invocando a geração do relatório 
                
                String file = new RelatorioService().gerarRelatorio(params, nomeRelatorioJasper);

}catch(Exception e){
System.out.println("ERRO: "+e.getMes

Criado 30 de abril de 2019
Ultima resposta 30 de abr. de 2019
Respostas 6
Participantes 2