Relatório IReport não carrega dados da jTable

4 respostas
K

Olá galera, venho recorrer a a juda de vcs mais uma vez!

Estou tentando criar um relatório no IReport sem conexão com um BD, e vi um tópico muito bom aqui no GUJ:

[url]http://www.guj.com.br/java/225496-ireport-sem-conexao-ao-bd-usando-jtable-#1617765[/url]

fiz exatamente como está lá, porém esta informando um erro que sinceramente não sei oque pode estar ocorrendo!
me código está assim:
Método que passa como parametro a jTable:

public void imprimeRelatorio() throws JRException {
        try {   
            String arquivo = "RelEntrada.jasper"; //arquivo de relatorio  
            java.io.InputStream file = getClass().getClassLoader().getResourceAsStream(arquivo); //carrego o arquivo  
            JRTableModelDataSource tabela = new JRTableModelDataSource(jTable1.getModel()); //aqui eu crio um datasource usando a propria jtable  
            Map parametros = new HashMap(); //apenas crio um map, mas nem passo parametro nem nada, os parametros sao as colunas da jtable  
            JasperPrint printer = JasperFillManager.fillReport(file, parametros, tabela); //aqui eu passo a jtable(tabela) para o relatorio  
            JasperViewer view = new JasperViewer(printer, true); //preview  
            view.setVisible(true);
            view.setTitle("Relatório de Movimentação Unitária por Veículo");
            
            
           
        } catch (Exception ex) {
            //JOptionPane.showMessageDialog(null,ex.getStackTrace());
            ex.printStackTrace();
        }

    }

e em um botão chamo este método, e da o seguinte erro:

java.lang.NullPointerException
	at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2264)
	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2277)
	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2748)
	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
	at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:53)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:214)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:632)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:956)
	at Janelas.JEntrada.imprimeRelatorio(JEntrada.java:47)
	at Janelas.JEntrada.jButton1ActionPerformed(JEntrada.java:239)
	at Janelas.JEntrada.access$200(JEntrada.java:29)
	at Janelas.JEntrada$4.actionPerformed(JEntrada.java:126)
	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:6038)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
	at java.awt.Component.processEvent(Component.java:5803)
	at java.awt.Container.processEvent(Container.java:2058)
	at java.awt.Component.dispatchEventImpl(Component.java:4410)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Component.dispatchEvent(Component.java:4240)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
	at java.awt.Container.dispatchEventImpl(Container.java:2102)
	at java.awt.Window.dispatchEventImpl(Window.java:2429)
	at java.awt.Component.dispatchEvent(Component.java:4240)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
	at java.awt.Dialog$1.run(Dialog.java:1039)
	at java.awt.Dialog$3.run(Dialog.java:1091)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Dialog.show(Dialog.java:1089)
	at java.awt.Component.show(Component.java:1419)
	at java.awt.Component.setVisible(Component.java:1372)
	at java.awt.Window.setVisible(Window.java:801)
	at java.awt.Dialog.setVisible(Dialog.java:979)
	at Janelas.JanelaPrincipal.jMenuItem1ActionPerformed(JanelaPrincipal.java:95)
	at Janelas.JanelaPrincipal.access$000(JanelaPrincipal.java:11)
	at Janelas.JanelaPrincipal$1.actionPerformed(JanelaPrincipal.java:49)
	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.AbstractButton.doClick(AbstractButton.java:357)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1170)
	at javax.swing.plaf.basic.BasicPopupMenuUI$Actions.doReturn(BasicPopupMenuUI.java:438)
	at javax.swing.plaf.basic.BasicPopupMenuUI$Actions.actionPerformed(BasicPopupMenuUI.java:412)
	at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
	at javax.swing.JComponent.processKeyBinding(JComponent.java:2844)
	at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
	at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216)
	at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2921)
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2913)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2807)
	at java.awt.Component.processEvent(Component.java:5815)
	at java.awt.Container.processEvent(Container.java:2058)
	at java.awt.Component.dispatchEventImpl(Component.java:4410)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Component.dispatchEvent(Component.java:4240)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:693)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:958)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:830)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:657)
	at java.awt.Component.dispatchEventImpl(Component.java:4282)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Window.dispatchEventImpl(Window.java:2429)
	at java.awt.Component.dispatchEvent(Component.java:4240)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Se alguem poder compartilhar alguma ideia do que possa estar havendo, desde já agradeço!

4 Respostas

F

Fala Kurio…

Vc já debuggou o código? Sabe em qual momento dentro do método rola o nullpointer?! Algum objeto aí está null… (não foi declarado, recebeu null como retorno de algum outro método, etc… )

De olhômetro assim posso tentar um pitaco… essa String arquivo aí com apenas o nome do .jasper… já tentou fazer um teste com o caminho real do arquivo? Ele pode não estar encontrando o arquivo, com isso sua variável file pode estar nula.

Dá uma debuggada que vc saber exatamente onde está ocorrendo… daí posta aqui para podermos te ajudar melhor!!!

K

fcruz.rj, é verdade devia ter pensado em debugar o cod antes de perguntar aqui, mas fiz conforme me orientou, e tava dando erro nesta linha:

java.io.InputStream file = getClass().getClassLoader().getResourceAsStream(arquivo); //carrego o arquivo

então resolvi retira-la, e o relatório foi gerado porém, o relatório contem somente a primeira linha da tabela!
O que será desta vez!?

K

Dei uma modificada agora o código está assim! mas não está enviando todas as linhas da jTable1

String arquivo = "RelEntrada.jasper"; DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); JRTableModelDataSource tabela = new JRTableModelDataSource(model); Map parametros = new HashMap(); JasperPrint printer = JasperFillManager.fillReport(arquivo, parametros, tabela); JasperViewer view = new JasperViewer(printer,false); //preview view.setVisible(true); view.setTitle("Lista de entrada de produtos");

Preciso urgente terminar essa parada, alguém aí!?
Obg!

K

Depos de muito esforço consegui, pra quem tiver a mesma dúvida que eu tive segue o código a baixo:
(Esse código apliquei no evento ActionPerformed do botão que eu queria que imprimisse o relatório)

DefaultTableModel de = (DefaultTableModel) jTable1.getModel(); JRTableModelDataSource datasource = new JRTableModelDataSource(de); String reportSource = "./RelEntrada.jrxml"; JasperReport jr = JasperCompileManager.compileReport(reportSource); Map<String, Object> params = new HashMap<String, Object>(); params.put("title", "Relatório de Entrada"); params.put("subtitle", "Mirassol D'Oeste >> São José dos Quatro Marcos"); JasperPrint jp = JasperFillManager.fillReport(jr, params, datasource); JasperViewer.viewReport(jp, false);

Só passei dois parametros como título e subtítulo do relatório!
Flw!

Criado 4 de setembro de 2013
Ultima resposta 10 de set. de 2013
Respostas 4
Participantes 2