Problemas com o IReport

10 respostas
I

Olá Amigos,

Estou tentando aprender a fazer relatorios com o ireport e estou com problemas para chamar o meu relatório, utilizei o sistema de busca e não consegui resolver…
É o seguinte, criei um relatório, coloquei o arquivo .jasper, e os.jar na minha aplicação e até ai blz…
quando vou chamar o relatório utilizando esta linha:

da o seguinte erro:

java.lang.ClassCastException: cannot assign instance of net.sf.jasperreports.engine.base.JRBaseTextField to field net.sf.jasperreports.engine.base.JRBaseLineBox.boxContainer of type net.sf.jasperreports.engine.JRBoxContainer in instance of net.sf.jasperreports.engine.base.JRBaseLineBox at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2004) at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1184) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1923) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1841) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1917) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1841) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) at java.util.ArrayList.readObject(ArrayList.java:591) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1818) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1917) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1841) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1917) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1841) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:85) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232) at Action.Compra.ImprimirSolicitacaoRelatorio.execute(ImprimirSolicitacaoRelatorio.java:94) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) Erro ao gerar o relatório: java.lang.ClassCastException: cannot assign instance of net.sf.jasperreports.engine.base.JRBaseTextField to field net.sf.jasperreports.engine.base.JRBaseLineBox.boxContainer of type net.sf.jasperreports.engine.JRBoxContainer in instance of net.sf.jasperreports.engine.base.JRBaseLineBox

:idea: Por favor, algém teria alguma idéia de como soluciona reste problema!!! :oops:

vlw

10 Respostas

celsofurtado

Tenta o seguinte:

// instancio o JasperReport
net.sf.jasperreports.engine.JasperReport relatoriosJasper = null;

// defino o caminho do report - arquivo jasper            
relatoriosJasper = (JasperReport)JRLoader.loadObject("c:/relatorio/Relatorio.jasper");

// instancio o jasperprint            
JasperPrint jasperPrint = JasperFillManager.fillReport(relatoriosJasper, parametros, con);

// instancio o jasperviewer com o jasperprint
JasperViewer jrViewer = new JasperViewer(jasperPrint, true); 

// exibo o jasperviewer com o relatório
jrViewer.setVisible(true);

Espero que te ajude…

Té mais…

G

amigo falto vc chamar o java preview, sigua a sugestao do amigo a cima que pode resolver seu problema, caso nao resolva poste novamente, mais poste a forma que esta realizando sua conexao

vlws

I

E ai Celso td bem?..vlw pela dica…
Olha fiz o que vc indicou, porém não funcionou, olha o problema esta na hora de carregar o arquivo .jasper

O arquivo .jasper esta no caminho indicado, porém, ele ainda dá o mesmo erro. É possivel que o problema seja por diferenças de tipos de dados dos campos do relatório? caso for possivel isso não daria problema na hora de compilar o relatório?

vlw

I

Pessoal, resolvi tirar todos os campos do relatório e quando mando gerar ele funciona (sem nada na página claro). Porém quando eu coloco os campos do relatório (nem que seja apenas um texto estático), ele lança o erro…

Alguem tem alguma idéia do que possa provocar este problema???

W

O tipo do campo do seu conjunto de dados não está batendo com o tipo do campo do relatório, veja se os tipos são iguais, por isso está dando java.lang.ClassCastException, eu tive esse problema quando estava jogando um campo numérico dentro de uma String . Por isso seu relatório roda sem campo nenhum, tenha cuidado com os campos CLOB e BLOB.

I

E ai pessoal,

Resolvi o problema com o meu relatório, era os .jar da aplicação que estavam enchendo o saco, retirei todos e adicionei novamente (verificando as versões não tinha prestado atenção e tinha colocado alguns antigos tb)…e funcionou…

Obrigado a todos que me ajudaram ai…vlw

G

to com esse mesmo problema kra…reparei que quando eu tento executar com a versar 2.0.2 do jasper ele funcinona normalmente, aí quando eu mudei pra a versão 2.0.5 ele passa a dar esse erro.

Vc pode me informar quais os jars que vc tá usando aí??

Agradeço antecipadamente sua atenção

Gessé Silva

I

Gessé…

Os arquivos que estou usando:

commons-collections-2.1.jar
commons-javaflow-20060411.jar
commons-logging-api-1.0.2.jar
iReport.jar
jasperreports-2.0.5.jar

espero ter ajudado…

G

é…o erro continua mesmo com esses jars. Alguem aí sabe o que pode ser???

fhsantos

Eu também estou com o mesmo problema, a minha aplicção é em desktop (swing). Se alguem puder ajudar,
segue os exemplos que foram postados, mas mesmo assim o erro continua.

Criado 1 de abril de 2008
Ultima resposta 6 de out. de 2008
Respostas 10
Participantes 6