Olá galera!
Preciso criar alguns relatorios gerenciais e pelo que vi o JasperReport seria a melhor solução, por ser open source e também muito flexivel.
Acontece que já andei lendo varios tutoriais na net e não consigo chegar a um resultado positivo.
Gostaria que vocês me ajudassem a descobrir onde está o erro.
Estou utilizando NetBeans 4.1
Java 1.4.2
Jasper Report 1.1.1 (com a ultima versão 1.2.3 ocorre o mesmo erro)
iReport para criar o visual do relatorio.
Criei um relatorio teste no iReport e compilei, gerando assim 2 arquivos:
classic.jrxml e classic.jasper
Depois criei a seguinte classe:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.design.*;
import java.sql.*;
import java.io.*;
import java.util.*;
public class Main {
private static Connection getConnection( ) throws
ClassNotFoundException, SQLException
{
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost/indicador";
String user = "root";
String password = "root";
Class.forName(driver);
Connection con = DriverManager.getConnection( url, user, password );
return con;
}
public void geraRelatorio( ) throws JRException, Exception
{
Connection con = getConnection( );
Statement stm = con.createStatement( );
String query = "select * from alunos";
ResultSet rs = stm.executeQuery( query );
//implementação da interface JRDataSource para DataSource ResultSet
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
JasperDesign jasperDesign = JasperManager.loadXmlDesign("c:/classic.xml");
JasperReport jasperReport = JasperManager.compileReport(jasperDesign);
//executa o relatório
Map parametros = new HashMap();
parametros.put("nota", new Double(10));
/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
JasperFillManager.fillReportToFile( "c:/classic.jrprint", parametros, jrRS );
/* Exporta para o formato PDF */
JasperExportManager.exportReportToPdfFile( "c:/MEUPDF.PDF" );
}
public static void main(String[] args) throws JRException, Exception
{
Main m=new Main();
m.geraRelatorio();
}
}
O erro é este aqui:
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
at net.sf.jasperreports.engine.JasperManager.loadXmlDesign(JasperManager.java:971)
at Main.geraRelatorio(Main.java:38)
at Main.main(Main.java:57)
Exception in thread "main"
Java Result: 1
Será possivel que terei que “jogar” este pacote em meu classpath??
Isto não já deveria estar empacotado com o JasperReport???
Será que estou fazendo a coisa da maneira correta?
Ficaria muito agradecido se alguém pudesse me ajudar…
Um forte abraço a todos!!