Já fuçei bastante atras disso, mas não consigo executar o relatório no arquivo .jar ,mas no netbeans ele funciona alguem pode me dar uma ajuda
.jar não abre relatório IReport
12 Respostas
Você poderia mostrar como está fazendo para abrir o relatorio do IReport no seu codigo, ou seja, o codigo que funciona no netbeans mas não no jar ?
public void gerarRelatorio() throws Exception {
String arquivo = "src/relatorio/report1.jasper";
Connection con = Conexao.obterCon();
PreparedStatement pstm = con.prepareStatement("SELECT * FROM cliente ORDER BY nome");
ResultSet rs = pstm.executeQuery();
JRDataSource jrds = new JRResultSetDataSource(rs);
Map parameters = new HashMap();
parameters.put("REPORT_CONNECTION",con);
JasperPrint print = JasperFillManager.fillReport(arquivo, parameters, jrds);
JasperExportManager.exportReportToPdfFile(print,"src/relatorio/report1.pdf");
Desktop.getDesktop().open(new File("src/relatorio/report1.pdf"));
}
Eu creio que o problema esta no seu mapeando do caminho de relatorio, aonde você faz
String arquivo = "src/relatorio/report1.jasper";
//E depois em
JasperExportManager.exportReportToPdfFile(print,"src/relatorio/report1.pdf");
Desktop.getDesktop().open(new File("src/relatorio/report1.pdf"));
Quando você compila o jar esse relatorio vai para aonde ?
Compile o seu jar com o netbeans e depois extrai ele com o winrar e procura em que local o seu relatorio estara.
Eu imagino que ele estara em uma pasta chamada relatorio com o nome report1.
Tente isso e me diga onde foi para o seu relatorio.
Sim, extrai o arquivo jar e dentro tem uma pasta chamada relatorio
Sim e dentro dessa pasta relatorio tem o seu relatorio correto ?
Mas a pasta SRC existe dentro do JAR ?
O caminho “src/relatorio/report1.jasper” é valido ?
sim tem o relatorio mas essa pasta src não existe dentro do jar
Então esse é o seu problema você esta informando um caminho invalido e provavelmente esta recebendo um NullPointerException.
Vamos arrumar o seu problema, esse relatorio ficará dentro do jar correto ?
Logo, é possivel ter acesso ao relatorio com o metodo getResourceAsStream(), que receberá o nome do recurso e ira procura-lo dentro do seu jar.
entao você pode fazer:
InputStream stream = getClass().getResourceAsStream("/relatorio/report1.jasper");
//E no JasperFillManager ao inves de fazer
//JasperFillManager.fillReport(arquivo, parameters, jrds);
//faça
JasperFillManager.fillReport(stream , parameters, jrds);
Agora você deve ser capez de prencher o relatorio, eu nunca usei o JasperExportManager.exportReportToPdfFile();
Então, por favor, me responda onde o metodo grava o pdf, em uma pasta fora do jar com o nome src ?
grava dentro da pasta src. não testei a mudança que vc passou pois estou no trabalho agora
Funcionou, mas nessa parte não como posso fazer JasperExportManager.exportReportToPdfFile(print,"/relatorio/report1.pdf");
Desktop.getDesktop().open(new File("/relatorio/report1.pdf"));
Tudo bem, quando testar me diga se funcionou.
Seria útil, por enquanto, se fosse mostrasse o erro, ao invés de repassar a exceção faça:
public void gerarRelatorio() {
try {
InputStream stream = getClass().getResourceAsStream("/relatorio/report1.jasper");
Connection con = Conexao.obterCon();
PreparedStatement pstm = con.prepareStatement("SELECT * FROM cliente ORDER BY nome");
ResultSet rs = pstm.executeQuery();
JRDataSource jrds = new JRResultSetDataSource(rs);
Map parameters = new HashMap();
parameters.put("REPORT_CONNECTION", con);
JasperPrint print = JasperFillManager.fillReport(stream, parameters, jrds);
JasperExportManager.exportReportToPdfFile(print, "src/relatorio/report1.pdf");
Desktop.getDesktop().open(new File("src/relatorio/report1.pdf"));
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
Desse modo você vai poder ver o erro mesmo abrindo o jar, mas não se esqueça de depois voltar para o outro modo que você escreveu onde você repassa a exceção.
Mais uma coisa, caso o código funcione o relatório em pdf será salvo em uma pasta no mesmo local do jar?
Faça o teste e diga se funciona.
Não conseguir passar para pdf, estou visualizando em .jasper. Valeu
Então ele abre em jasper, mas não em pdf, direto do jar ?
Então o export para pdf esta com erro ?
Por favor, coloque o erro que aparece na hora de passar para pdf.