pô, tô com o mesmo problema aqui…
só pra tentar refrescar a memória da galera…
se alguém puder ajudar…
flw
Hwo
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 ??
ae galera…
logo abaixo está o código da minha classe (que é do tutorial daqui).
só pra esclarecer:
Ricardo:
Eduardo
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. 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: 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 QueryApp.main(QueryApp.java:101)
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é…
Faltou algum passo lá no iReport??
Valeu!!!
Visualizado 20 vezes e ninguém conseguiu se quer me dar uma luz??
Valeu mesmo assim…