Chamar Relatório Ireport na aplicação

3 respostas
Hernaneprates

Pessoal, já li uns tutoriais e ainda não consegui chamar meu relatório
feito com IReport na minha aplicação

vou postar: o código.
a exeption.
as bibliotecas.

Código:

package testarelatorio;

import java.net.URL;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;

public class TestaRelatorio {

    public void exibirRelatorio() {

        Conexao con = new Conexao();

        try {
            Connection start = con.conectar();
    
            try {
                System.out.println();  
                URL arquivo = getClass().getResource("Livro.jasper");     
                System.out.println(arquivo);  
                JasperReport jr = (JasperReport) JRLoader.loadObject(arquivo);
                Map parametros = new HashMap();    
                System.out.println(parametros);
                JasperPrint impressao = JasperFillManager.fillReport(jr, new HashMap(),start);
                JasperViewer viewer = new JasperViewer(impressao, false);
                viewer.setVisible(true);
                
    
}
catch (Exception ex) {
    ex.printStackTrace();
    con.fechar(); 
}
        }
            catch (Exception ex1) {
    con.fechar(); 
   
   
    con.fechar();    
     
   }
     
 }
}

A pilha da exeção:

run:
Conexao bem sucedida!

file:/C:/Users/Administrador/Documents/NetBeansProjects/TestaRelat%c3%b3rio/build/classes/testarelatorio/Livro.jasper
{}
java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
at testarelatorio.TestaRelatorio.exibirRelatorio(TestaRelatorio.java:29)
at testarelatorio.Relatório.jButton1ActionPerformed(Relatório.java:47)
at testarelatorio.Relatório.access$000(Relatório.java:4)
at testarelatorio.Relatório$1.actionPerformed(Relatório.java:21)
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:6290)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6055)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4653)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
at java.awt.Container.dispatchEventImpl(Container.java:2083)
at java.awt.Window.dispatchEventImpl(Window.java:2482)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:607)
at java.awt.EventQueue$1.run(EventQueue.java:605)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:621)
at java.awt.EventQueue$2.run(EventQueue.java:619)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
Conexao encerrada com sucesso!
at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
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)

__________________________________________________________________________________
AS Bibliotecas:

jasperrepports-2.0.2.jar
mysql-connector-java-5.1.16.jar
commons-collection.jar
commons-lang.jar
commons-loggin.jar
jcommon.jar
commons-digester3-3.2.jar

__________________________________________________________________________________

Podem ver que no meu código eu coloquei uns System.out.println pra mostrar os objetos.

Quem puder me ajudar ficarei muito grato.

Ah sim, o relatório está na mesma pasta do programa

3 Respostas

marciosouzajunior

Você não deveria passar nenhum parâmetro ali na linha onde deu erro? Vocẽ criou um hash map mas depois passou outro novo…

Estou utilizando relatórios aqui na minha aplicação passando os dados atraveś de JavaBeans DataSource e o trecho em que carrego o relatório é assim:

InputStream arquivo = getClass().getResourceAsStream("/relatorios/relatorio.jasper");

            JRDataSource jrds = new JRBeanCollectionDataSource(minhaList);

            JasperPrint print = JasperFillManager.fillReport(arquivo, null, jrds);

            JasperViewer viewer = new JasperViewer(print, false);
            viewer.setExtendedState(JasperViewer.MAXIMIZED_BOTH);
            viewer.setTitle("Relatório ...");
            viewer.setVisible(true);
Hernaneprates

Então Marcio, a diferença do seu pra o meu é a fonte de dados, no meu caso um banco mysql
que já carrego na conexão.

Hernaneprates

Marcio, fiz com InputStream e deu essa exeção aí.

run:
Conexao bem sucedida!

java.io.BufferedInputStream@17182c1

{}

java.lang.NullPointerException

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)

at testarelatorio.TestaRelatorio.exibirRelatorio(TestaRelatorio.java:30)

at testarelatorio.Relatório.jButton1ActionPerformed(Relatório.java:47)

at testarelatorio.Relatório.access$000(Relatório.java:4)

at testarelatorio.Relatório$1.actionPerformed(Relatório.java:21)

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:6290)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6055)

at java.awt.Container.processEvent(Container.java:2039)

at java.awt.Component.dispatchEventImpl(Component.java:4653)

at java.awt.Container.dispatchEventImpl(Container.java:2097)

at java.awt.Component.dispatchEvent(Component.java:4481)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)

at java.awt.Container.dispatchEventImpl(Container.java:2083)

at java.awt.Window.dispatchEventImpl(Window.java:2482)

at java.awt.Component.dispatchEvent(Component.java:4481)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)

at java.awt.EventQueue.access$000(EventQueue.java:84)

at java.awt.EventQueue$1.run(EventQueue.java:607)

at java.awt.EventQueue$1.run(EventQueue.java:605)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)

at java.awt.EventQueue$2.run(EventQueue.java:621)

at java.awt.EventQueue$2.run(EventQueue.java:619)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)

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(Conexao encerrada com sucesso!

EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Criado 30 de março de 2012
Ultima resposta 30 de mar. de 2012
Respostas 3
Participantes 2