JasperReports retorna erro NULL

8 respostas
R
init:
Deleting: D:\chamarRelatorio\build\built-jar.properties
deps-jar:
Updating property file: D:\chamarRelatorio\build\built-jar.properties
compile:
run:
21/05/2010 17:20:53 chamarrelatorio.ChamarRelatorioView jButton1ActionPerformed
SEVERE: null
java.lang.NullPointerException
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
        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:472)
        at classes.relatorios.gerarTodos(relatorios.java:50)
        at chamarrelatorio.ChamarRelatorioView.jButton1ActionPerformed(ChamarRelatorioView.java:214)
        at chamarrelatorio.ChamarRelatorioView.access$800(ChamarRelatorioView.java:26)
        at chamarrelatorio.ChamarRelatorioView$4.actionPerformed(ChamarRelatorioView.java:127)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 20 segundos)

retorna esse erro acima.
minha classe e função para conectar é esta.

package classes;



import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.SQLException;
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;

public class relatorios {

    private static Connection getConnection() throws
            ClassNotFoundException, SQLException {
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/locadora";
        String user = "root";
        String password = "";
        Class.forName(driver);
        Connection con = (Connection) DriverManager.getConnection(url, user, password);
        return con;
    }



    //Ok nao mecher mais
    public void gerarTodos() throws JRException, Exception {

         Connection con = getConnection();
        Statement stm = (Statement) con.createStatement();
        String query = "select * from cadastrofilmes";
        ResultSet rs = (ResultSet) 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 parametros = new HashMap();

        String patch ="D:/chamarRelatorio/src/relatorios/relatorio.";

        
        /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
        JasperFillManager.fillReportToFile("D://chamarRelatorio/src/relatorios/relatorio.jasper","D://chamarRelatorio/src/relatorios/relatorio.jrprint", parametros,jrRS);
        /* Exporta para o formato PDF */
        JasperExportManager.exportReportToPdfFile("D://chamarRelatorio/src/relatorios/relatorio.jrprint","D://chamarRelatorio/src/relatorios/relatorio.pdf");


        /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sema necessidade do .jrprint */
        //JasperRunManager.runReportToPdfFile("D://chamarRelatorio/src/relatorios/relatorio.jasper","D://chamarRelatorio/src/relatorios/relatorio.pdf", parametros,jrRS);


        /* Visualiza o relatório em formato PDF */
       // JasperViewer.viewReport("C://Salao3000/src/relatorios/gerarTodosAlunos.jrprint",false, false);
    }


}

Antes funcionava fazendo isso, mas agora gera esse erro, e não consigo resolver de forma alguma.
HEELPPP

8 Respostas

maxdavis

Quando vc Debuga onde gera o erro?

R

Quando eu executo o debug, não aparece nenhum erro, somente este erro que postei hoje. :frowning:

maxdavis

Quando vc marcar o brakpoint e vai passando pela linhas onde ele para e gera o erro?

R

Na realidade ele não esta gerando o Jrprint, o arquivo necessario pra gerar o pdf

JasperFillManager.fillReportToFile("D://chamarRelatorio/src/relatorios/relatorio.jasper","D://chamarRelatorio/src/relatorios/relatorio.jrprint", parametros,jrRS);

na linha 50 do codigo

maxdavis

possivelmente ele não está encontrando o caminho relatório
tenta criar uma pasta dentro do seu projeto tipo jasper. e coloca o caminho /jasper/relatorio.jasper

maxdavis

Dá uma olhada nesse tópico se pode te ajudar http://www.guj.com.br/posts/list/76922.java

rdmardegam

Notei uma coisa, você está chamando os arquivos desta maneira:
D://chamarRelatorio/src/relatorios/relatorio.jasper
talvez n seria:
D://chamarRelatorio//src//relatorios//relatorio.jasper

Mas enfim, se não for isso:

Tente primeiramente gerar o jasperPrint:

JasperPrint jasperPrint = JasperFillManager.fillReportToFile("D://chamarRelatorio//src//relatorios//relatorio.jasper", parametros, jrRS);

Após ter o JasperPrint efetue a exportacao para o pdf

// create a PDF file  in byte[]
byte bytes[] = JasperExportManager.exportReportToPdf(jasperPrint); 

//ou

// export on disk
JasperExportManager.exportReportToPdfFile(jasperPrint , "c://Relatorio.pdf");

Ou exporte direto para bytes[]

// Transforma em bytes   
                bytes = JasperRunManager.runReportToPdf(arquivoRelatorio,  
                        parametros,jrRS);

Obtendo o array de bytes vc consegue gravar no disko, enviar para donwload para o usuário e td mais.

Espero q ajude.

Abraço.

J

Se todos os posts acima não deram resultados:

Já tive problemas ao mexer com relatórios gerados por um iReport de versão mais recente.

Ao tentar com outro, de versão mais antiga não dava erro nenhum. :S

Acho que pode ser o seu caso, me lembro de ter um erro parecido.

Criado 21 de maio de 2010
Ultima resposta 23 de mai. de 2010
Respostas 8
Participantes 4