Ajuda iReport

9 respostas
ricardocomp

Olá pessoal,
já não sei mais o que fazer, já faz mas de uma semana
que eu venho pelejando para chamar o meu relatório
no browser através do JSF e até agora não consegui
exibi-lo no browser. Mas quando ele vai abrir no browser
desaparece e eu sobro igual Jiló na Janta. :smiley:
e está aparecendo um NullPointerException no
meu InputStream. Para falar a verdade eu criei
uma pasta chamada jasper com os arquivos .jasper
mas não sei aonde esta pasta deve ficar.
e não sei se o que eu estou fazendo esta certo:

InputStream isReport = this.getClass().getResourceAsStream ("/jasper/laudo.jasper");
JasperReport jrReport = (JasperReport) JRLoader.loadObject(isReport);

Será que tem como alguém me dar uma ajuda?

[]'s.

9 Respostas

ricardocomp

Oi pessoal,
eu não aguanto mais ver essa mensagem:

java.lang.NullPointerException
        at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
        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:597)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:192)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:361)
        at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:242)
        at controller.LaudoController.gerarPDF(LaudoController.java:231)
        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:597)
        at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
        at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
        at javax.faces.component.UICommand.broadcast(UICommand.java:383)
        at javax.faces.component.UIData.broadcast(UIData.java:854)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)

Será que alguém poderia me dar uma ajuda?

[]'s.

ricardocomp

O que está errado no meu método pessoal?

public String gerarPDF() {
         try {
            Connection conn = ConnectionFactory.getConnection();
            InputStream rel = null;
            rel = getClass().getResourceAsStream("/jasper/laudo.jasper");                      

            //Estou passando os parametros diretamente só para poder testar.
            Map parameters = new HashMap();
            //parameters.put("idAmostra", String.valueOf(this.idAmostra));
            parameters.put("idAmostra", "5");
            parameters.put("numero", "01/2008");
            parameters.put("observacao", "Tudo certo");
            parameters.put("conclusao", "Conclusoes");
            
            byte[] bytes = JasperRunManager.runReportToPdf(rel, parameters, conn);
            HttpServletResponse response = (HttpServletResponse) FacesContext. getCurrentInstance().getExternalContext().getResponse();
            response.setContentType("application/pdf");
            response.setContentLength(bytes.length);
            ServletOutputStream outputStream = response.getOutputStream();
            outputStream.write(bytes, 0, bytes.length);
            outputStream.flush();
            outputStream.close();
            FacesContext.getCurrentInstance().responseComplete();
            conn.close();
            return "sucesso_laudo";
           }
           catch (Exception e) {
              e.printStackTrace();
              return "falha_laudo";
           }
        }

Será que alguém poderia me dar uma ajdua fazendo o
favor?

[]'s.

viniciusfaleiro

Apenas traduzindo: Não tem nenhuma versão antiga do Jasper no seu classpath? (Jar…provalvemente)

Verifique com

System.out.println(JRPropertiesMap.class.getPackage().getImplementationVersion());

Cara… nesse link o cara resolveu com isso

http://jasperforge.org/plugins/espforum/view.php?group_id=102&forumid=103&topicid=45989&res=41

thiagocg

Para falar a verdade eu criei
uma pasta chamada jasper com os arquivos .jasper
mas não sei aonde esta pasta deve ficar.

Você deve deixar essa sua pasta jasper na raiz do seu WebContent, para a aplicação conseguir achar o seu arquivo .jasper.

Tente tb trocar a sua linha:InputStream isReport = this.getClass().getResourceAsStream ("/jasper/laudo.jasper"); para:FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/jasper/laudo.jasper");
[]'s

ricardocomp

Erro ao Editar…

thiagocg

Cara, não trabalho com netbeans, mas criei um projetinho de exemplo aqui só pra testar e ele cria uma pasta chamada “Páginas Web” (estou usando o netbeans 6.5.1), e creio que tua pasta de relatorios deva ficar nesta pagina.

[]'s

ricardocomp

Jóia Thiago?
Eu tenho que fazer assim:

InputStream rel = null;

            //rel = getClass().getResourceAsStream("/jasper/laudo.jasper");
            rel = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/jasper/laudo.jasper");
            Map parameters = new HashMap();

            parameters.put("idAmostra", String.valueOf(this.idAmostra));
            parameters.put("numero", "01/2010");
            parameters.put("observacao", "");
            parameters.put("conclusao", "");

            byte[] bytes = JasperRunManager.runReportToPdf(rel, parameters, conn);

Não está dando certo eu já coloquei a minha pasta jasper dentro
da pasta web do Netbeans, mas mesmo assim não está dando certo.

Será que você Thiago ou alguém pode me dar uma ajuda?

[]'s.

ricardocomp

Jóia Thiago?
Será que você ou alguém poderia me dar
uma ajuda?

Eu tenho que fazer isso mesmo:

rel = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/jasper/laudo.jasper");

Nâo estou conseguindo fazer dá certo de jeito nenhum. :frowning:

[]'s.

thiagocg

Olá Ricardo, bom dia!

Abaixo um trecho de codigo que uso pra gerar o relatorio em pdf e mostrá-lo no jsp:
FacesContext context = FacesContext.getCurrentInstance();
	HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
	InputStream reportStream = context.getExternalContext().getResourceAsStream("/relatorios/listagemClientes.jasper");
	ServletOutputStream servletOutputStream = response.getOutputStream();
			
	JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);

	parametros.put("titulo", titulo);
			
	JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, ds);
		
	response.setContentType("application/pdf");
	context.responseComplete();
	servletOutputStream.flush();
	servletOutputStream.close();

Minha pasta relatorios esta na raiz do WebContent.

Agora, ficaria melhor se vc fosse debugando e nos falasse em qual linha da erro, postasse seu código e o erro que foi gerado.

[]'s

Criado 20 de fevereiro de 2010
Ultima resposta 2 de mar. de 2010
Respostas 9
Participantes 3