Ajuda com relatorio

3 respostas
cleitonoliveira

Pessoal,

Alguem saberia me dizer o que ocorre, os relatorios abrem certinho no netbeans, mas ao executar no jar não abre, executei pelo cmd para ver o erro mão nao entendi, poderiam me ajudar?

segue erro,

net.sf.jasperreports.engine.JRRuntimeException: java.io.FileNotFoundException: relatorios\cliente.pdf (O sistema não pode encontrar o caminho especificado)

at net.sf.jasperreports.export.SimpleOutputStreamExporterOutput.(SimpleOutputStreamExporterOutput.java:71)

at net.sf.jasperreports.export.SimpleOutputStreamExporterOutput.(SimpleOutputStreamExporterOutput.java:84)

at net.sf.jasperreports.engine.JasperExportManager.exportToPdfFile(JasperExportManager.java:155)

at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:505)

at DAO.DAOCliente.relatorioClientesDAO(DAOCliente.java:270)

at controller.ControllerCliente.relatorioClientesDAO(ControllerCliente.java:70)

at view.ViewCliente$15.run(ViewCliente.java:449)

Caused by: java.io.FileNotFoundException: relatorios\cliente.pdf (O sistema não pode encontrar o caminho especificado)

at java.base/java.io.FileOutputStream.open0(Native Method)

at java.base/java.io.FileOutputStream.open(Unknown Source)

at java.base/java.io.FileOutputStream.(Unknown Source)

at java.base/java.io.FileOutputStream.(Unknown Source)

at net.sf.jasperreports.export.SimpleOutputStreamExporterOutput.(SimpleOutputStreamExporterOutput.java:67)

3 Respostas

rodriguesabner

Não encontrou o arquivo cliente.pdf, mostra como você fez pra chamar o relatório

cleitonoliveira

Abner boa tarde,

Então acho que sei o é, porem não sei como concertar, o fato é que criei uma pasta fora do src e seria para salvar nesta pasta o relátorio, porem não salva o arquivo pdf por isso não acha, abaicho segue o codigo que estou usando, se tiver uma dica de um codigo melhor agradeço.

JRResultSetDataSource jrRs = new JRResultSetDataSource(getResultSet());

InputStream caminhoRelatorio = this.getClass().getClassLoader().getResourceAsStream(ireport/cliente.jasper);

JasperPrint jasperPrint = JasperFillManager.fillReport(caminhoRelatorio, new HashMap(), jrRs);

JasperExportManager.exportReportToPdfFile(jasperPrint, relatorios/cliente.pdf);

File file = new File(relatorios/cliente.pdf);

try {

Desktop.getDesktop().open(file);

} catch (Exception e) {

JOptionPane.showConfirmDialog(null, e);

}

file.deleteOnExit();

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

} finally {

this.fecharConexao();
rodriguesabner

Uso assim e funciona perfeitamente:

public void guj() {
    new Thread() {
        @Override
        public void run() {
            String hora = new SimpleDateFormat("HHmmss").format(new Date(System.currentTimeMillis()));
            String data = new SimpleDateFormat("ddMMyyyy").format(new Date(System.currentTimeMillis()));
            conecta.conexao();
            try {
                conecta.rs.first();
                conecta.executaSQL("SELECT * FROM algumaCoisa WHERE id = '" + campoid.getText() + "'");
                JRResultSetDataSource relatResul = new JRResultSetDataSource(conecta.rs);
                JasperPrint jpPrint = JasperFillManager.fillReport(getClass().getResourceAsStream("/relatorio/MeuArquivo.jasper"), new HashMap(), relatResul);
                String nomeArquivo = camponome.getText().replace(" ", "") + data + hora + ".pdf";
                JasperExportManager.exportReportToPdfFile(jpPrint, "C:\\temp\\" + nomeArquivo);
                java.awt.Desktop.getDesktop().open(new File("C:\\temp\\" + nomeArquivo));
                //Deletar o arquivo ao fechar a aplicação
                //File file = new File("C:\\temp\\" + nomeArquivo);
                //file.deleteOnExit();
            } catch (JRException | SQLException | IOException ex) {
                ex.printStackTrace();
            }
            conecta.desconecta();
        }
    }.start();
}
Criado 7 de setembro de 2018
Ultima resposta 7 de set. de 2018
Respostas 3
Participantes 2