Iniciante com Jasper Report

Oi gente , to tentando começar com o JasperReport e Ireport aki no meu projeto

Criei um relatorio no Ireport e compilei ele, ate ai blz
Mas na hora de mandar rodar ele no java da dando problema, uso o seguinte metodo

public static void main(String[] args) {
        JasperReport jasperReport;
        JasperPrint jasperPrint;
        try {
            
            jasperPrint = JasperFillManager.fillReport(
"./jasper/IdadeSalesianosBranco.jasper", new HashMap(), new ConexaoMySQL().getConnection());
            JasperExportManager.exportReportToPdfFile(
                    jasperPrint, "./jasper/simple_report.pdf");
        } catch (JRException e) {
            e.printStackTrace();
        }
    }

E estou o obtendo o seguinte erro

Exception in thread "main" java.lang.NullPointerException at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:123) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:420) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:256) at br.salesianos.teste.Relatorio1.main(Relatorio1.java:27) Java Result: 1
Alguém sabe como fazer funcionar ou o motivo deste erro

Ai esta minha classe ConexaoMysql

public Connection getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String driver = "jdbc:mysql://localhost/curriculosdb";
            Connection con = DriverManager.getConnection(driver, "root", "");
            return con;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

Cara veja isso, acho que vai lhe ajudar

http://www.k19.com.br/artigos/relatorios-em-java-jasperreports-e-irepor/

Ao que me parece, ele não está recebendo parâmetro para montar o relatório, está vindo nulo…

O que é essa classe Relatorio1 a qual o nullPointerException está se referindo??? Pode postá-la aqui???

[]'s

Este é o Controle (Servlet).

[code]package control;

import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

import persistence.ProdutoDao;

public class Relatorio extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	execute(request, response);
}

protected void doPost(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	execute(request, response);
}


protected void execute(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	
	ProdutoDao d = new ProdutoDao();
	
	try{
		d.open();
		
//JasperReports -> iReport
	
//Passo o ResultSet do JDBC para o Relatorio
	JRResultSetDataSource ds = new JRResultSetDataSource(d.findAll());
		
//Arquivo do relatório
	JasperDesign jd = JRXmlLoader.load("c:\\aula\\relatorio.jrxml");
		
//Compilar o relatório
	JasperReport jr = JasperCompileManager.compileReport(jd);
		
//Mescar os dados do JDBC ao documento do Relatório
	JasperPrint jp = JasperFillManager.fillReport(jr, null, ds);
		
		//Download de PDF
	response.reset();
	response.setContentType("application/pdf");
		
	OutputStream out = response.getOutputStream();
	JasperExportManager.exportReportToPdfStream(jp, out);
	out.flush();
	out.close();			
	}
	catch(Exception e){
		e.printStackTrace();
	}
	finally{
		d.close();
	}

}

}[/code]

E este aqui é onde ele busca os dados do banco.

[code]public ResultSet findAll() throws Exception{

stmt = con.prepareStatement("select * from produto");
rs = stmt.executeQuery();
	
return rs; //Retorna o proprio ResultSet com os dados do JDBC

}[/code]

Tenta usar desta forma, só mudar os dados…

Ai Você faz o seguinte, cria na sua PÁGINA JSP um link ou formulário chamando este CONTROLE…

action=“Controle”

vlw, abraços.

O rsmoraes passou uma boa forma de se fazer usando servlet, porém a forma que ele usou usando, usando JRResultSetDataSource, está muito diferente da forma que uso, tanto q nao uso resultset no meu sistema e nenhum DAO, sendo assim não tive como reproduzir o exemplo criado.
Porém consegui gerar um pdf usando o seguinte codigo:

public static void main(String[] args) {
        try {
            Connection con = new ConexaoMySQL().getConnection();
            HashMap parametros = new HashMap();
            //parametros.put("DATA_INICIO", "2007/07/01");
            //parametros.put("DATA_FIM", "2007/07/10");
            JasperPrint jp = JasperFillManager.fillReport("C:\\jasper4.1.3.jasper", parametros, con);
            JasperExportManager.exportReportToPdfFile(jp, "C:\\jasper4.pdf");
            //JasperViewer jrv = new JasperViewer(jp);
            //jrv.setVisible(true);
            System.out.println("oi");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Porém o codigo so funciona se eu rodar ele diretamente de dentro do public static void main(como se fosse uma aplicação desktop), se eu tentar rodar ele usando JSF ou mesmo um servelt, ele gera o seguinte erro

O que pode estar gerando este erro?