Re: Problema com iReport com JasperReports

pô, tô com o mesmo problema aqui…

só pra tentar refrescar a memória da galera…
se alguém puder ajudar…

flw

Hwo

.

posta o codigo pra gente vê

Esse erro acontece qdo vc tenta carregar o relatorio a partir de uma de suas classes ou qdo vc tenta executar o relatorio no proprio IReport ???

Se for em uma de suas classes, seria interessante que vc postasse o código que tenta carregar o relatório.

Sua classe implementa Serializable ??

:stuck_out_tongue:

ae galera…
logo abaixo está o código da minha classe (que é do tutorial daqui).

só pra esclarecer:

  • Ricardo:

    • quando executo pelo iReport não dá problemas
    • quando executo pela classe (usando NetBeans) o arquivo pdf (ou html) é gerado, mas não é mostrado e a exception aparece
  • Eduardo

    • como vc vai ver, minha classe não implementa Sealizable

aqui vai

package com.provenda.relas;

import com.provenda.util.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;
import java.util.*;
import java.sql.*;

public class bairros {
    public void geraRelatorio() throws JRException, Exception, SQLException {
        Connection con = UtilDB.conexao();
        Statement stm = con.createStatement();
        String query = "select Código, Descrição, format(dtalteração,'dd/mm/yyyy') "+
                       "as Data from oficio3611 order by descrição";
        ResultSet rs = stm.executeQuery(query);        
        JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
        Map parameters = new HashMap();
        //parameters.put("data_solicitacao", "10/11/2004");                
        JasperFillManager.fillReportToFile("c:/backup/dug/ireport/relas/bairros.jasper", parameters, jrRS);
        //JasperExportManager.exportReportToHtmlFile( "c:/backup/dug/ireport/relas/bairros.jrprint" );
        JasperRunManager.runReportToHtmlFile("c:/backup/dug/ireport/relas/bairros.jasper", parameters, jrRS);        
        JasperViewer.viewReport( "c:/backup/dug/ireport/relas/bairros.html", false );
    }        
    public static void main(String[] args) throws JRException, Exception {
        new bairros().geraRelatorio();
    }        
}

e aqui a exception:

java.io.StreamCorruptedException: invalid stream header
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:737)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:128)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:106)
        at net.sf.jasperreports.view.JRViewer.loadReport(JRViewer.java:1249)
        at net.sf.jasperreports.view.JRViewer.<init>(JRViewer.java:171)
        at net.sf.jasperreports.view.JasperViewer.<init>(JasperViewer.java:161)
        at net.sf.jasperreports.view.JasperViewer.viewReport(JasperViewer.java:297)
        at com.provenda.relas.bairros.geraRelatorio(bairros.java:22)
        at com.provenda.relas.bairros.main(bairros.java:25)

NESTED BY :
java.io.StreamCorruptedException: invalid stream header
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:737)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:128)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:106)
        at net.sf.jasperreports.view.JRViewer.loadReport(JRViewer.java:1249)
        at net.sf.jasperreports.view.JRViewer.<init>(JRViewer.java:171)
        at net.sf.jasperreports.view.JasperViewer.<init>(JasperViewer.java:161)
        at net.sf.jasperreports.view.JasperViewer.viewReport(JasperViewer.java:297)
        at com.provenda.relas.bairros.geraRelatorio(bairros.java:22)
        at com.provenda.relas.bairros.main(bairros.java:25)

NESTED BY :
net.sf.jasperreports.engine.JRException: Error loading object from file : c:\backup\dug\ireport\relas\bairros.html
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:133)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:106)
        at net.sf.jasperreports.view.JRViewer.loadReport(JRViewer.java:1249)
        at net.sf.jasperreports.view.JRViewer.<init>(JRViewer.java:171)
        at net.sf.jasperreports.view.JasperViewer.<init>(JasperViewer.java:161)
        at net.sf.jasperreports.view.JasperViewer.viewReport(JasperViewer.java:297)
        at com.provenda.relas.bairros.geraRelatorio(bairros.java:22)
        at com.provenda.relas.bairros.main(bairros.java:25)
Caused by: java.io.StreamCorruptedException: invalid stream header
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:737)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:128)
        ... 7 more

obrigado antecipadamente.
Hwo

ae pessoal.
como não tô conseguindo ver o relatório com o código acima, comecei a fuçar aqui e consegui de outra forma.

gostaria da análise de vocês pra me dizer se é ou não é uma boa idéia usar esta nova forma de visualizar o relatório. (sei lá. talvez tenha algum ponto fraco ou desvantagem…)

obs: as linhas alteradas são as três últimas do método geraRelatorio().

flw

Hwo

olha ae:

package com.provenda.relas;

import com.provenda.util.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
import java.util.*;
import java.sql.*;

public class bairros {
    public void geraRelatorio() throws JRException, Exception, SQLException {
        Connection con = UtilDB.conexao();
        Statement stm = con.createStatement();
        String query = "select nome from cientes";                       
        ResultSet rs = stm.executeQuery(query);        
        JasperReport jr;
        JasperPrint jprint;
        JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
        Map parameters = new HashMap();
        jr = JasperCompileManager.compileReport("teste.jrxml");
        jprint = JasperManager.fillReport(jr, parameters, jrRS);
        JasperViewer.viewReport(jprint);
    }        
    public static void main(String[] args) throws JRException, Exception {
        new bairros().geraRelatorio();
    }        
}

Galera,

invalid stream header” eh um erro que ocorre qdo vc faz assim,

JasperViewer.viewReport(“Teste01.pdf”, false );

ou seja, estamos tentando visualizar um relatório .pdf ou .html, como o Hwoarang fez… e como o tutorial “daqui” descreve.

O correto seria:
JasperViewer.viewReport(“Teste01.jrprint”, false );

Isso pq o viewReport visualiza só .jrprint

Podemos gerar .pdf, .html, etc de dentro da classe java, da seguinte forma: JasperExportManager.exportReportToPdfFile(“Teste01.jrprint”);

Mas não acho que seria util fazer isso pq vc poderá exportar para qq formato quando estiver visualizando pelo JasperViewer.

Em nosso sistema esta fazendo da aeguite forma:

//** Ler o XML gerado pelo iReport e gerar o .jasper (não eh necessario fazer + de 1) **//
JasperCompileManager.[b]compileReportToFile/b;

//** Preenche o Relatório com os dados. Gera o arquivo .jrprint **//
JasperFillManager.fillReportToFile(“Teste01.jasper”, parameters, jrRS);

//** Visualiza o relatório .jrprint **//
JasperViewer.viewReport(“Teste150.jrprint”, false );

Ou seja, essencialmente preenchemos e visualizamos o relatório.

Um problema que eu tive com o iReport 0.4.0 foi dava erro em um tal scriplet, e eu leigo d+, não saquei que era só ir nas propriedades do projeto e setar para não usar scriplet. :smiley: eu ralei até com esse carinha.

Mas, depois de ralar bastante, conseguimos rodar 100% beleza o JasperReports e o iReports, com as vrs mais novas.

Cleber Moraes.
Cooperativa Agrovale.
Quirinópolis-GO

e quando esse erro ocorre com um sub-report?

meu relatorio tem um sub-report que está dando esse mesmo erro.

se vc abrir o sub-report e rodar ele rola normal…

Abraço

Desculpem ressuscitar esse tópico, mas estou com exatamente o mesmo problema do rapaz acima. Tenho um sub-relatório que está gerando esse erro.

Exception in thread "AWT-EventQueue-0" net.sf.jasperreports.engine.JRRuntimeException: Error loading object from : E:\Projeto Petra D'Or\src\relatorio\subFluxo.jrxml
        at net.sf.jasperreports.repo.DefaultRepositoryService.loadObject(DefaultRepositoryService.java:207)
        at net.sf.jasperreports.repo.DefaultRepositoryService.getResource(DefaultRepositoryService.java:168)
        at net.sf.jasperreports.repo.RepositoryUtil.getResource(RepositoryUtil.java:145)
        at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:125)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:314)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:344)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:272)
        at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257)
        at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:468)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBandNoOverflow(JRVerticalFiller.java:440)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVerticalFiller.java:404)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:265)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:129)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:903)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:832)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:605)
        at relatorio.FluxoCaixa.geraRelatorio(FluxoCaixa.java:47)
        at relatorio.Gerador.<init>(Gerador.java:22)
        at controle.ControlePrincipal.actionPerformed(ControlePrincipal.java:91)
        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.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1211)
        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.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)
Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
        at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:53)
        at net.sf.jasperreports.repo.DefaultRepositoryService.loadObject(DefaultRepositoryService.java:202)
        ... 47 more
setContas = new HashSet<Conta>();
                lista = dao.consultaPorData(data, "");
                for(Object o: lista)
                    setContas.add(((MovimentoFinanceiro)o).getConta());
                totais = calculos(lista);
                jr = new JRBeanCollectionDataSource(lista);
                parameters = new HashMap();
                parameters.put("saldo", totais.get(0));
                parameters.put("saldoGeral", totais.get(1));
                is = this.getClass().getResourceAsStream("fluxoCaixa.jasper");
                print = JasperFillManager.fillReport(is, parameters, jr);
                JasperViewer.viewReport(print, false);

Aew galera… to começando a fazer uns relatórios, e optei por iReport, já baixei e configurei tudo (espero que esteja certo!)…

Criei um relatório simples no iReport e tentei rodar ele no exemplo que vem no JasperReports: QueryApp, já que o relatório usa uma query pegando dados do banco, mas de cara tomo a exception:

java.io.StreamCorruptedException&#58; invalid stream header at java.io.ObjectInputStream.readStreamHeader&#40;ObjectInputStream.java&#58;737&#41; at java.io.ObjectInputStream.&lt;init&gt;&#40;ObjectInputStream.java&#58;253&#41; at net.sf.jasperreports.engine.util.JRLoader.loadObject&#40;JRLoader.java&#58;128&#41; at QueryApp.main&#40;QueryApp.java&#58;101&#41;

Alguém já saberia o que é de primeira? Precisa do XML gerado? Porque ele tem a query e tals… não sei se vcs vão conseguir rodar né… :stuck_out_tongue:
Faltou algum passo lá no iReport??

Valeu!!!

Visualizado 20 vezes e ninguém conseguiu se quer me dar uma luz?? :frowning:

Valeu mesmo assim…