NullPointer ao tentar gerar relatorio Jasper

7 respostas
E

Galera,

To tendo um probleminha ao tentar gerar um relatorio usando o jasperReport, sempre na hora de preencher o relatorio, o programa é interrompido dando NullPointer, poderiam me ajudar!?
Detalhe, ja cheguei a debugar e os todos os parametros passados para o metodo fillreport, estão preenchidos...

private Map retornaParametros(){
			Map map = new HashMap();
			map.put("inicio", sdf.format(inicio.getTime()));
			map.put("fim", sdf.format(fim.getTime()));
			map.put("projeto", projeto.getNome());
			
			
			return map;
			
		}
		
		private static final String TEMPLATE_PLACE = "report3.jasper";
		
		public void gerarRelatorio(ByteArrayOutputStream os){
			saida = null;
			String jasper = TEMPLATE_PLACE;
				
			try {
								
				List<Map> campos = new ArrayList<Map>();
				campos.add(retornaParametros());
								
				 JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(campos);
				 InputStream relatorio = getClass().getResourceAsStream("report3.jasper");
				 
				// JasperReport jasperReport = JasperCompileManager.compileReport(getClass().getResourceAsStream("report3.jrxml"));  
				 Map parameters = new HashMap();
				 /*
				 * Mando o jasper gerar o relatório. Nesse caso passo o map, 
				 * já que ele tem dois parâmetros que serão utilizados
				 */ 
				 
				 JasperPrint print = JasperFillManager.fillReport(relatorio, retornaParametros(),ds);
				
				// Gero o PDF
				byte[] pdf = preenchePdf(print);
				
				os.write(pdf);
				
			} catch (Exception e) {
				e.printStackTrace();
			}

java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:123)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:420)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToStream(JasperFillManager.java:340)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToStream(JasperFillManager.java:299)
at br.com.spg.gestaoprojetos.relatorio.jasper.RelatorioProjetoHorasApontadasJasper.gerarRelatorio(RelatorioProjetoHorasApontadasJasper.java:87)
at br.com.spg.gestaoprojetos.business.GraficoProjetoHorasApontadasMBean.gerarRelatorioGrafico(GraficoProjetoHorasApontadasMBean.java:183)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ...

7 Respostas

Hebert_Coelho

Oq tem aqui?
RelatorioProjetoHorasApontadasJasper.java:87

renato.marquez

Checou o seu InputStream? Talvez ele esteja vindo nulo.

UPDATE:
Só para constar (retirado da documentação da Oracle):

E

Galera colocando minha classe completa para melhor analise:

package br.com.spg.gestaoprojetos.relatorio.jasper;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;

import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.discovery.tools.Service;

import net.sf.jasperreports.engine.JRAbstractObjectFactory;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRAbstractBeanDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.util.JRAbstractImageEncoder;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import br.com.spg.gestaoprojetos.model.ProjetoVO;


public class RelatorioProjetoHorasApontadasJasper {
	
		private Calendar inicio;
		private Calendar fim;
		private ProjetoVO projeto;
		private BufferedImage imagem;
		private String saida;
		private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		private static JRDataSource dados;
	
		public RelatorioProjetoHorasApontadasJasper(BufferedImage bufferedimage, ProjetoVO projetovo, Calendar datainicio, Calendar datafim){
			this.imagem = bufferedimage;
			this.projeto = projetovo;
			this.inicio = datainicio;
			this.fim = datafim;
					
		}
		
		private Map retornaParametros(){
			Map map = new HashMap();
			map.put("inicio", sdf.format(inicio.getTime()));
			map.put("fim", sdf.format(fim.getTime()));
			map.put("projeto", projeto.getNome());
			
			
			return map;
			
		}
		
		private static final String TEMPLATE_PLACE = "report3.jasper";
		
		public void gerarRelatorio(ByteArrayOutputStream os){
			saida = null;
			String jasper = TEMPLATE_PLACE;
				
			try {
								
				List<Map> campos = new ArrayList<Map>();
				campos.add(retornaParametros());
								
				 JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(campos);
				 InputStream relatorio = getClass().getResourceAsStream("report3.jasper");
				 
				// JasperReport jasperReport = JasperCompileManager.compileReport(getClass().getResourceAsStream("report3.jrxml"));  
				 Map parameters = new HashMap();
				 /*
				 * Mando o jasper gerar o relatório. Nesse caso passo o map, 
				 * já que ele tem dois parâmetros que serão utilizados
				 */ 
				 
				 JasperPrint print = JasperFillManager.fillReport(relatorio, retornaParametros(),ds);
				
				// Gero o PDF
				byte[] pdf = preenchePdf(print);
				
				os.write(pdf);
				
			} catch (Exception e) {
				e.printStackTrace();
			}
			
						
		}
	
		private byte[] preenchePdf(JasperPrint print) throws JRException, IOException {
			
			byte[] a = JasperExportManager.exportReportToPdf(print);
			/*
			 * Jogo na variável saída o nome da aplicação mais o 
			 * caminho para o PDF. Essa variável será utilizada pela view 
			 */
		
			return a;
		}
			
		}

e o InputStream está sendo preenchido com java.io.ByteArrayInputStream@49ada86,
e o ds com: java.io.ByteArrayInputStream@49ada86

Hebert_Coelho

Cara, você deve estar com código desatualizado então.

Olha a mensagem de erro:
at br.com.spg.gestaoprojetos.relatorio.jasper.RelatorioProjetoHorasApontadasJasper.gerarRelatoriob Linha 87[/b]

E na linha 87 vc tem um comentário: */

E
Cara, mandei a ultima versao do codigo, limpando aqueles comentarios la, e o erro é o msm:

java.lang.NullPointerException

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:582)

at br.com.spg.gestaoprojetos.relatorio.jasper.RelatorioProjetoHorasApontadasJasper.gerarRelatorio(RelatorioProjetoHorasApontadasJasper.java:84)

at br.com.spg.gestaoprojetos.business.GraficoProjetoHorasApontadasMBean.gerarRelatorioGrafico(GraficoProjetoHorasApontadasMBean.java:183)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.el.parser.AstValue.invoke(AstValue.java:191)

at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)

at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)

at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:78)

at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:57)

at javax.faces.component.UICommand.broadcast(UICommand.java:127)

at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)

at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)

at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)

at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)

at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)

at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)

at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)

at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:183)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)

at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at br.com.spg.mvc.controller.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:96)

at br.com.spg.gestaoprojetos.controller.filter.GestaoProjetosAuthenticationFilter.doFilter(GestaoProjetosAuthenticationFilter.java:42)

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:127)

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:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)
E

Estou enviando o jrxml pra vcs darem uma olhada se tem algo errado nele…

furutani

Cola a linha 84 do RelatorioProjetoHorasApontadasJasper.java
aqui no post.

Criado 10 de fevereiro de 2012
Ultima resposta 10 de fev. de 2012
Respostas 7
Participantes 4