Jasperreport + ireport....não sei o que está acontecendo.....[RESOLVIDO...POR MIM]

Olá Pessoal,

É o seguinte:

Recém estou iniciando com ireport. E agora eu quero capturar um parametro de uma aplicação Swing. Para isso, importei as livrarias correspondentes. Mas o que não estou conseguindo é mostrar o informe gerado.

Segue o código:

Código de chamada:

ExportarInforme informe = new ExportarInforme();
informe.exportar();

Clase ExportarInforme:

package pacote;

import java.io.InputStream;
import java.lang.ClassLoader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.*;

/**
 *
 * @author usuario
 */
public class ExportarInforme  {

    private Connection connection = null;

    public ExportarInforme() {
     this.conectar();
    }

    private void conectar() {
              
        try {
            String usuario = "user";
            String clave = "clave";
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            String url = "jdbc:jtds:sqlserver://servidor/BD";
            this.connection  = DriverManager.getConnection(url, usuario, clave);

            if (connection  != null) {
                System.out.println("Conexión OK");
            }
        } catch (SQLException a) {
            a.printStackTrace();

        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
            System.exit(1);
        }
        
    }

    
    private void desconectar() {

        try {
            this.connection.close();       
        } catch (SQLException ex) {
            Logger.getLogger(ExportarInforme.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    
    
    public void exportar() {
        try {
            
                     ClassLoader cl = this. getClass(). getClassLoader(); 
            InputStream is =(cl.getResourceAsStream("files/informe.jasper")); 
            
                                                    
            Map parametros = new HashMap();
            parametros.put("area", "rrhh");
            
          
            //aqui lança o NULL!!
            JasperPrint jasperPrint = JasperFillManager.fillReport(is, parametros,this.connection);

            JasperViewer jviewer = new JasperViewer(jasperPrint, false);
            jviewer.setVisible(true);

        } catch (Exception j) {
            System.out.println("Mensaje de Error:" + j.getMessage());
            j.printStackTrace();
            
        } finally {
            this.desconectar();
        }
    }
}

Acho que estou fazendo tudo conforme. No .jasper o parametro area está registrado e está dentro de uma Query:

select * from tabela where tabela.area = $P{area}

O output:

java.lang.NullPointerException
        at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2266)
        at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2279)
        at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:191)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:361)

A versão tanto do jasper como do ireport é a 3.0.0, e estou usando o netbeans 6.1. e o JDK 6 update 10.

Obrigado de antemão.


SOLUÇÃO:

  • Incluir todas as bibliotecas necesarias (.jar) do jasperreports e do ireport no netbeans. As que inlcluí foram:
  1. commons-digester-1.7.jar
  2. commons-collections-2.1.jar
  3. commons-logging-1.0.2.jar
  4. itext-1.3.1.jar
  5. poi-3.0.1-FINAL-20070705.jar
  6. jasperreports-3.0.0.jar
  7. iReport.jar
  8. jdt-compiler-3.1.1.jar (esta não estava mencionada nos tutoriais)

todas a bibliotecas foram tiradas do diretorio \lib do iReport.

Obs: funcionou colocando o .jasper direto no C:\ , para colocar numa pasta dentro do projeto netbeans, eu coloquei o seguinte:

InputStream inputStream = new FileInputStream( "./src/pasta/informe.jasper"); 
JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parametros, this.conn);

Espero que sirva para alguém.