Relatório jaspersoft reports trava quando tento gerar dois ao mesmo tempo

2 respostas
L

Boa tarde a todos. criei um gerador de relatórios vendas. esta funcionando corretamente. Porem quando tento abrir dois relatórios ao mesmo tempo o sistema trava e da a seguinte exceção.

net.sf.jasperreports.engine.JRException: Error trying to export to file : C:\BLVendas\rel0.pdf

at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:389)

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

at relatorios.DAORelatorios.gerarRelatorioCliente(DAORelatorios.java:61)

at controller.ControllerCliente.gerarRelatorioCliente(ControllerCliente.java:82)

at view.ViewPrincipal$51.run(ViewPrincipal.java:941)

Caused by: java.io.FileNotFoundException: C:\BLVendas\rel0.pdf (O arquivo  está sendo usado por outro processo)

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

at java.io.FileOutputStream.open(FileOutputStream.java:270)

at java.io.FileOutputStream.(FileOutputStream.java:213)

at java.io.FileOutputStream.(FileOutputStream.java:162)

at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:383)

 4 more

Meu método.

public boolean gerarRelatorioCliente() {

try {

this.conectar();

this.executarSQL("SELECT "

+ "     clientes.codigo AS clientes_codigo, "

+ "     clientes.nome AS clientes_nome, "

+ "     clientes.nome_fantasia AS clientes_nome_fantasia, "

+ "     clientes.endereco AS clientes_endereco, "

+ "     clientes.bairro AS clientes_bairro, "

+ "     clientes.cep AS clientes_cep, "

+ "     clientes.telefone AS clientes_telefone, "

+ "     clientes.cpf_cnpj AS clientes_cpf_cnpj, "

+ "     clientes.observacao AS clientes_observacao, "

+ "     clientes.ativo AS clientes_ativo, "

+ "     clientes.tipo_pessoa AS clientes_tipo_pessoa, "

+ "     cidade.codigo_ibge AS cidade_codigo_ibge, "

+ "     cidade.codigo AS cidade_codigo, "

+ "     cidade.nome AS cidade_nome, "

+ "     estado.uf AS estado_uf, "

+ "     estado.nome AS estado_nome "

+ “FROM "

+ "     cidade cidade INNER JOIN clientes clientes ON cidade.codigo = clientes.cod_cidade "

+ "     INNER JOIN estado estado ON cidade.fk_cod_estado = estado.codigo”);

JRResultSetDataSource jrRS = new JRResultSetDataSource(getResultSet());

// caminho do arquivo dentro dos pacotes

InputStream caminhoRelatorio = this.getClass().getClassLoader().getResourceAsStream(“ArquivosJasper/relatorioClientes.jasper”);

JasperPrint jasperPrint = JasperFillManager.fillReport(caminhoRelatorio, new HashMap(), jrRS);
String nomeArquivo = "C:/BLVendas/rel0.pdf";
        JasperExportManager.exportReportToPdfFile(jasperPrint, nomeArquivo);
        File file = new File(nomeArquivo);
        file.deleteOnExit();
        try {
            Desktop.getDesktop().open(file);
        } catch (Exception e) {
            JOptionPane.showConfirmDialog(null, e);
        }
        file.deleteOnExit();
        
    } catch (Exception e) {
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, e.getMessage(), "Erro:", JOptionPane.ERROR_MESSAGE);
        return false;
    }
    return true;
}

2 Respostas

T

Não seria este o motivo!

L

Seria sim! Porem o sistema trava! o primeiro gera normal. O segundo que da essa exceção. eu queria gerar quantos relatórios eu quisesse. Porem caso não tenha como, gostaria de tratar essa exceção. O sistema esta travando quando tento gerar dois. pelo menos não travar e retornar uma mensagem.

Criado 25 de junho de 2020
Ultima resposta 26 de jun. de 2020
Respostas 2
Participantes 2