Quando executo na IDE o relatório é gerado normalmente. O problema é quando gero o jar da aplicação. Ao gerar o jar, ele não consegue gerar o relatório.
Método do relatório
public void btnRelatorio() {
try {
if (this.view.getTblVendas().getSelectedRow() != - 1) {
int id = Integer.parseInt(String.valueOf(this.view.getTblVendas().getValueAt(this.view.getTblVendas().getSelectedRow(), 0)));
HashMap<String, Object> dados = new HashMap();
dados.put("id", id);
JasperReport relatorioCompilado = JasperCompileManager.compileReport("src/br/com/clinica/model/modelorelatorio/Pagamento.jrxml");
JasperPrint relatorioPrenchido = JasperFillManager.fillReport(relatorioCompilado, dados, new ConnectionFactory().getConnection());
JFrame tela = new JFrame();
tela.setSize(1000, 500);
JRViewer view = new JRViewer(relatorioPrenchido);
tela.getContentPane().add(view);
tela.setVisible(true);
} else {
JOptionPane.showMessageDialog(null, "Escolha uma linha da tabela");
}
} catch (JRException ex) {
Logger.getLogger(TelaConsulta.class.getName()).log(Level.SEVERE, null, ex);
}
}
Isso é por causa do classpath. Qualquer arquivo que estiver no classpath estará disponível em tempo de execução. Isso garante que vc não terá problemas com caminhos relativos, independentemente de onde o jar da sua aplicação esteja.
Execute o jar pela linha de comando e tente enviar o email. Se estiver estourando alguma exceção, deve aparecer no terminal. Pegue o erro e poste aqui (de preferência, crie um novo tópico, para que ele tenha mais destaque).
não é uma boa prática, pq vc esconde o erro do usuário. O ideal seria apresentar algo na tela em caso de erro, como um JOptionpane ou jogar o erro num arquivo de log na mesma pasta do jar, por exemplo.