JasperReport. Mudei o codigo, mas continua no erro

1 resposta
S

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...

1 Resposta

L

Opa !

Usa este que funciona !!
Estou usando ele !!
Tive muitos problemas …

olha divirta-se

import java.io.IOException;

import java.io.StringReader;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import java.util.HashMap;

import javax.swing.text.BadLocationException;
import javax.swing.text.rtf.RTFEditorKit;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

/* Primeira parte */
public class rel2 {

private Connection con = null;

private String driver = oracle.jdbc.driver.OracleDriver;

private String endereco = enderecoBanco;

private String user = usuarioBanco;

private String pass = senhaBanco;

private ResultSet rs = null;

private String valores[] = new String[10];

private int chamada = 1;

private String dir = local onde está o arquivo do relatorio;

private StringReader stream;

/*Segunda parte */
public rel2() {

/* Efetua a conexao a base de dados e coleta os valores da base de dados armazenando-os

em um array para ser futuramente utilizado */

try {

if (con == null) {

Class.forName(driver);

con = DriverManager.getConnection(endereco, user, pass);

Statement statement = con.createStatement();

rs = statement.executeQuery(select a ser executado);
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
		
		JasperPrint jasperPrint = JasperFillManager.fillReport(
		"relatorio.jasper", new HashMap(), jrRS);
		
		JasperViewer.viewReport(jasperPrint);

     }
  }
  catch (Exception e) {
     System.err.println("Problemas apresentados na operacao de conexao");
     e.printStackTrace();
  }
}

/* Aqui chamamos o construtor de nossa classe para exibirmos o relatorio e 4ª parte*/

public static void main (String args[]) {

new rel2();

System.out.println(ok);

}

}

Lindberg

Criado 4 de maio de 2006
Ultima resposta 1 de jun. de 2006
Respostas 1
Participantes 2