Boa noite pessoas…
estou desenvolvendo uma aplicação utilizando o iReport para geração de relatórios. Quando compilo o programa ele roda perfeitamente o relatório com opção de salvar, imprimir, etc…
depois eu crio o arquivo .jar e ele cria perfeitamente porém, qndo vou rodar, ele não gera o relatório…se eu tiro a classe Relatorio (listada abaixo) no arquivo .jar, ele cria e o programa roda perfeitamente…
Exception in thread “main” java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRException
at Principal.Relatorios(Principal.java:176)
at Principal.init
at Principal.main(Principal.java:8)
Caused by: java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JRException
at java.net.URLClassLoader$1.run(Unknow Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Uknown Source)
at java.lang.ClassLoader.loadClass(Unknow Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknow Source)
at java.lang.ClassLoader.loadClass(Unknow Source)
at java.lank.ClassLoader.loadClassInternal(Unknow Source)
segue abaixo meu método responsável pela geração de relatório:
[code]public void geraRelatorio(){
try{
conexao.abrir();
URL url = getClass().getResource("Relatorios//DiaSeguinte.jasper");
if (url == null)
JOptionPane.showMessageDialog(null,"Arquivo não encontrado");
InputStream is = url.openStream();
PreparedStatement pstmt = conexao.conexao.prepareStatement("SELECT HISTORICO.COD_CLIENTE,HISTORICO.COD_HISTORICO, CLIENTE.NOME_RAZAO FROM HISTORICO AS HISTORICO INNER JOIN CLIENTE AS CLIENTE ON CLIENTE.COD_CLIENTE = HISTORICO.COD_CLIENTE WHERE HISTORICO.RETORNO = DATE_ADD(CURDATE(),INTERVAL 1 DAY)");
ResultSet rs = pstmt.executeQuery();
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
HashMap parameters = new HashMap();
parameters.put("data", String.valueOf(formataData.format(data.getTime())));
JasperPrint jp = JasperFillManager.fillReport(is, parameters, jrRS); // aqui vai a tua conexao com o bando
JasperViewer.viewReport(jp, false);
bSairRelatorios.doClick();
}
catch(SQLException e){
JOptionPane.showMessageDialog(null,e.getMessage());
}
catch(JRException e){
JOptionPane.showMessageDialog(null,e.getMessage());
}
catch(Exception ex) {
ex.printStackTrace();
}
}[/code]
e estou importando isto:
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Component;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.FocusListener;
import java.awt.event.FocusEvent;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Calendar;
import java.util.GregorianCalendar;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.net.URL;
import java.io.InputStream;
estou usando a IDE JGrasp
No aguardo.