14
respostas

Falha na geração do PDF

Exception in thread "main" net.sf.jasperreports.engine.JRException: Error compiling report java source files : C:\Users\Guilherme\Documents\Desenvolvimento\workNeon\Jasper\financas_1498487074130_538312.java 
    at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:106)
    at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileUnits(JRAbstractClassCompiler.java:77)
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:201)
    at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:240)
    at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(JasperCompileManager.java:156)
    at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(JasperCompileManager.java:115)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:415)
    at Principal.main(Principal.java:19)
Caused by: java.io.IOException: Cannot run program "javac": CreateProcess error=2, O sistema não pode encontrar o arquivo especificado
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:75)
    ... 7 more
Caused by: java.io.IOException: CreateProcess error=2, O sistema não pode encontrar o arquivo especificado
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 11 more
14 respostas

Até o System.out funciona, mas o erro aparece dali para frente.

public static void main(String[] args) throws Exception {
        System.out.println("Começando o teste!!!");

        JasperCompileManager.compileReportToFile("financas.jrxml"); 

        Connection conexao = new ConnectionFactory().getConnection();
        Map<String, Object> params = new HashMap<String, Object>();

        JasperPrint jasperPrint = JasperFillManager.fillReport("C:\\Users\\Guilherme\\Documents\\Desenvolvimento\\workNeon\\Jasper\\financas.jasper", params, conexao);
        OutputStream stream = new FileOutputStream("C:\\Users\\Guilherme\\Documents\\Desenvolvimento\\workNeon\\Jasper\\financas.pdf");

        JRExporter exporter = new JRPdfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, stream);
        exporter.exportReport();

        stream.close();

        conexao.close();
    }

Pelos meus testes o erro é gerado na linha:

JasperCompileManager.compileReportToFile("C:\Users\Guilherme\Documents\Desenvolvimento\workNeon\Jasper\financas.jrxml");

Oi,

Pelo que entendi, o arquivo jrxml não está sendo encontrado.

Caused by: java.io.IOException: Cannot run program "javac": CreateProcess error=2, O sistema não pode encontrar o arquivo especificado
    at java.lang.ProcessBuilder.start(Unknown Source)

Té mais,

Fagner, boa tarde,

O problema é que deveria ser encontrado já que o path está correto!!

Oi,

Tente executar com breakpoint e a cada linha tente inspecionar onde ocorre ocorre o erro. Além disso perceba que para compilar o jrxml você não coloca o path inteiro, e já para buscar o compilado(jasper) você informa o path completo.

Espero ter ajudado,

FAgner, toda ajuda é bem vinda, mas já tinha tentado o path absoluto, e não mudou nada.

Se olhares, ele está procurando o arquivo .java e com o que parece ser um time stamp no final:

Exception in thread "main" net.sf.jasperreports.engine.JRException: Error compiling report java source files : C:\Users\Guilherme\Documents\Desenvolvimento\workNeon\Jasper\financas_1498498381844_42687.java

Olá,

Tente algo diferente:

http://community.jaspersoft.com/questions/518509/compiling-error-java-ireport-jrxml

Neste link, ele mudou a forma de compilar o arquivo.

Té mais,

Fagner, novamente obrigado pelo retorno.

Esse código usa métodos deprecated, e demanda novas libs. Testei e mesmo assim recebi outros erros.

Gostaria de saber o que falta para que eu consiga usar conforme o curso.

Eu joguei o relatório dentro e um sistema com struts que uso, e consegui fazer funcionar com o Struts2, mas queria fazer ele rodar conforme o curso. É minha primeira incursão no universo jasper e preciso conhecer os passos.

Olá,

Entendi. O seu jrxml está na raiz do projeto? Seu projeto é um maven project, java project normal?

Té mais,

Sim meu jrxml está na raiz do projeto. O projeto é o do curso, baixado o zip como instruído pelo exercício. Sem maven e com todas as libs adicionadas.

Fiz um teste aqui e tirando a seguinte linha:

JasperCompileManager.compileReportToFile("financas.jrxml");

a classe compila. Para que exatamente serve essa linha?

Olá,

Dá uma olhada:

http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JasperCompileManager.html

Espero ter ajudado,

O método compileReportToFile() da classe JasperCompileManager serve para compilar o arquivo .jrxml criado pelo Report Designer que voce utilizou, no caso o IReport (eu estou utilizando o JasperSoft Studio) no arquivo .jasper que vai ser utilizado pela aplicação java para gerar o relatório. Isso só deve ser feito uma vez, ou antão depois de ter sido feita alguma modificação no design do relatório. No meu caso eu nem utilizei mais esse método, o que eu passei a fazer foi abrir o arquivo jrxml no Report Designer (IReport ou JasperSoft Studio) e utilizar a função build dele, que compila o report em arquivo .jasper, exatamente o mesmo que o método em questão faz.

Estou com o mesmo problema alguém conseguiu resolver?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software