Juntei todos os métodos (criaconexão, gerarelatorio…etc) no método que é chamado no actionperforme da minha aplicação, no menu.
Eis a gambi:
[code]private void menuMatMesActionPerformed(java.awt.event.ActionEvent evt) {
EmpresaJpaController JPAUnidade = new EmpresaJpaController();
Empresa empresa = new Empresa();
List lista = JPAUnidade.findEmpresaEntities();
if (lista.size() != 0) {
empresa = (Empresa) lista.get(0);
String titulo = AplicacaoConstants.RelMatMes;
String mesAno = FormataData.descMes(empresa.getMesEmp()).toUpperCase();
mesAno += " - ";
mesAno += empresa.getAnoEmp().toString();
String mes = FormataData.numMes(empresa.getMesEmp());
String ano = empresa.getAnoEmp().toString();
String dataIni = ano + "-" + mes + "-01";
String dataFim = ano + "-" + mes + "-31";
Map parametros = new HashMap();
parametros.put("ENTIDADE",empresa.getEntidEmp());
parametros.put("MESANO",mesAno);
parametros.put("DATAINI",dataIni);
parametros.put("DATAFIM",dataFim);
//URL jasperFile = this.getClass().getResource("/educacional/reports/matriculadosMes.jasper");
InputStream jasperFile = getClass().getResourceAsStream("/educacional/reports/matriculadosMes.jasper");
JasperPrint relatorio = null;
String url = "jdbc:mysql://localhost:3306/EDUCACIONAL";
String login = "root";
String pwd = "educacao";
JDialog dlgRelatorio = new JDialog(new javax.swing.JFrame(),titulo, true);
dlgRelatorio.setSize(800,600);
dlgRelatorio.setLocationRelativeTo(null);
dlgRelatorio.setModal(true);
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(GeraRelatorio.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null,FormataErro.FormataErro(ex.getMessage()),"Erro",0);
}
Connection con = null;
try {
con = DriverManager.getConnection(url, login, pwd);
} catch (SQLException ex) {
Logger.getLogger(GeraRelatorio.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null,FormataErro.FormataErro(ex.getMessage()),"Erro",0);
}
JasperReport jasperReport = null;
if(jasperFile == null){
JOptionPane.showMessageDialog(null,"Caminho do relatório não encontrado","Erro",0);
}else{
try {
jasperReport = (JasperReport) JRLoader.loadObject( jasperFile );
} catch (JRException ex) {
Logger.getLogger(GeraRelatorio.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null,FormataErro.FormataErro(ex.getMessage()),"Erro",0);
}
try {
relatorio = JasperFillManager.fillReport(jasperReport, parametros, con);
}catch (JRException jRException) {
JOptionPane.showMessageDialog(null,FormataErro.FormataErro(jRException.getMessage()),"Erro",0);
}
JasperViewer viewer = new JasperViewer(relatorio, false);
viewer.setTitle(titulo);
dlgRelatorio.getContentPane().add(viewer.getContentPane());
dlgRelatorio.setVisible(true);
}
/*
IORelatorio matMesX = null;
try {
matMesX = new IORelatorio(new java.net.URL(getClass().getResource("/educacional/reports/matriculadosMes.jasper"), “matriculadosMes.jasper”), parametros, titulo);
} catch (MalformedURLException ex) {
JOptionPane.showMessageDialog(null,FormataErro.FormataErro(ex.getMessage()),“Erro”,0);
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
desktopPane.add(matMesX);
matMesX.setVisible(true);*/
}
} [/code]
Detalhes:
- Tentei tanto com GetResourceAsStream quanto com GetResource e nenhum funcionou.
- Usei diversas formas de “definir” o caminho nos getResorces, tais como:
InputStream jasperFile = getClass().getResourceAsStream("/educacional/reports/matriculadosMes.jasper");
InputStream jasperFile = getClass().getResourceAsStream("educacional/reports/matriculadosMes.jasper");
InputStream jasperFile = getClass().getResourceAsStream("../educacional/reports/matriculadosMes.jasper");
e nenhum deles funcionou, sendo que no primeiro (que acredito ser o correto), nada é exibido, a aplicação simplesmente para e sequer exibe alguma exception, enquanto nos dois últimos é exibida a exception de arquivo não encontrado (jasperFile == null)
Relembrando que, executando pelo NetBeans, tanto com getResource quanto com GetResourceasStream, funciona! 