Executavel java não encontra o caminho dos relatórios ireport

3 respostas Resolvido
fileireportjavaexception
W

Boa tarde Senhores!
Estou com um problema e nenhum dos outros posts conseguiu me ajudar…
Estava verificando meu TCC e acabei de me deparar com o seguinte problema: O meu executável .JAR não consegue identificar a pasta onde estão os relatórios criados pelo iReport versão 5.6.0.
No meu projeto, possuo uma pasta br.integrado.reports onde eu guardo todos os meus .jasper além de já ter importado as bibliotecas do iReport para o projeto.
Esse é meu código para “impressão” do relatório:
public class RelatorioService {

private static final String FOLDER = “/br/integrado/reports”;

public void gerarRelatorio(HashMap parametros, String nomeRelatorioJasper) throws JRException {

String caminhoRelatorio = this.getClass().getResource(FOLDER).getPath();
String caminhoArquivosJasper = caminhoRelatorio + File.separator + nomeRelatorioJasper + ".jasper";

JasperReport relatorioJasper = (JasperReport) JRLoader.loadObjectFromFile(caminhoArquivosJasper);

JasperPrint impressoraJasper = JasperFillManager.fillReport(relatorioJasper, parametros, ConexaoJDBC.getConexao());

JasperViewer jrv = new JasperViewer(impressoraJasper, false);
jrv.setVisible(true);
jrv.toFront();

}

No netbeans funciona perfeitamente, porém no .jar ele me gera a seguinte exception pelo CMD:

GRAVE: null net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: file:\C:\Users\willz\Documents\GitHub\TCC\StoreSoft\dist\StoreSoft.jar!\br\integrado\reports\ListagemClientesReport.jasper at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:114) at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:103) at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromFile(JRLoader.java:94) at br.integrado.reports.RelatorioService.gerarRelatorio(RelatorioService.java:33) at br.integrado.view.RelListagemClienteView.imprimirRelatorio(RelListagemClienteView.java:269) at br.integrado.view.RelListagemClienteView.jButton1ActionPerformed(RelListagemClienteView.java:197) at br.integrado.view.RelListagemClienteView.access$300(RelListagemClienteView.java:24) at br.integrado.view.RelListagemClienteView$4.actionPerformed(RelListagemClienteView.java:136) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.io.FileNotFoundException: file:\C:\Users\willz\Documents\GitHub\TCC\StoreSoft\dist\StoreSoft.jar!\br\integrado\reports\ListagemClientesReport.jasper

Alguém poderia me ajudar?

3 Respostas

Jederson_Andre

faz um System.out.println dessa string e veja se o caminho esta correto

W

Bom dia Jederson!

Esse é o caminho que sai no SOUT:
/C:/Users/willz/Documents/GitHub/TCC/StoreSoft/build/classes/br/integrado/reports/ListagemClientesReport.jasper

Esse caminho funciona perfeitamente no projeto no netbeans, porém, no executável não, portanto acredito que o caminho que deveria estar pegando é o do arquivo java encontrado na pasta dist.


Mas como indico esse caminho tendo em vista que o caminho vária de acordo com cada máquina?

W
Solucao aceita

Resolvido:

public void gerarRelatorio(HashMap parametros, String nomeRelatorioJasper) {
    try {
        JasperPrint relatorio = null;
        JasperReport jasperReport = null;
        InputStream jasperFile = Thread.currentThread().getClass().getResourceAsStream("/br/integrado/reports/" + nomeRelatorioJasper + ".jasper");
        jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);
        relatorio = JasperFillManager.fillReport(jasperReport, parametros, ConexaoJDBC.getConexao());
        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();
    }
}
Criado 25 de novembro de 2018
Ultima resposta 28 de nov. de 2018
Respostas 3
Participantes 2