Oi..
Seguindo o Tutorial de [url]http://www.guj.com.br/content/articles/reports/JasperReportsIReport.pdf[/url]
Segui a risca esse tutorial, mas estou sem sucesso para gerar o relatório a partir de uma classe java. Pelo iReport ele funciona normalmente, mas quero chamar a essa classe para gerar o relatório.
Código
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.view.JasperViewer;
public class Relatorio {
private static Connection getConnection( ) throws
ClassNotFoundException, SQLException
{
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost/sergio_aliados";
String user = "root";
String password = "";
Class.forName(driver);
Connection con = DriverManager.getConnection( url, user, password );
return con;
}
/* Gera Relatorio e visualiza-o */
public void geraRelatorio( ) throws JRException, Exception
{
Connection con = getConnection( );
Statement stm = con.createStatement( );
String query = "select * from aliados";
ResultSet rs = stm.executeQuery( query );
/* implementação da interface JRDataSource para DataSource ResultSet */
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
/* HashMap de parametros utilizados no relatório. Sempre instanciados */
Map parameters = new HashMap();
//parameters.put("COLUNA", valor);
/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
JasperFillManager.fillReportToFile( "Relatorio.jasper", parameters, jrRS );
/* Exporta para o formato PDF */
JasperExportManager.exportReportToPdfFile( "Relatorio.jrprint" );
/* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem
a necessidade do .jrprint */
//JasperRunManager.runReportToPdfFile("BibliotecaPessoal.jasper", parameters, jrRS);
/* Visualiza o relatório em formato PDF */
JasperViewer.viewReport( "Relatorio.pdf", false );
}
public static void main(String[] args) throws JRException, Exception
{
new Relatorio().geraRelatorio();
}
}
Erros
Exception in thread "main" java.lang.ExceptionInInitializerError
at net.sf.jasperreports.engine.fill.JRBaseFiller.createDatasets(JRBaseFiller.java)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:373)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:92)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:74)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:147)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:83)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:492)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:448)
at Relatorio.geraRelatorio(Relatorio.java:41)
at Relatorio.main(Relatorio.java:52)
Caused by: org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException
at org.apache.commons.logging.LogFactory.newFactory(LogFactory.java:558)
at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:355)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:390)
at org.apache.commons.javaflow.bytecode.Stack.<clinit>(Stack.java:35)
... 11 more
Caused by: java.lang.NullPointerException
at org.apache.commons.logging.LogFactory.newFactory(LogFactory.java:543)
... 14 more
Grato Fabiano...