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...
privateMapretornaParametros(){Mapmap=newHashMap();map.put("inicio",sdf.format(inicio.getTime()));map.put("fim",sdf.format(fim.getTime()));map.put("projeto",projeto.getNome());returnmap;}privatestaticfinalStringTEMPLATE_PLACE="report3.jasper";publicvoidgerarRelatorio(ByteArrayOutputStreamos){saida=null;Stringjasper=TEMPLATE_PLACE;try{List<Map>campos=newArrayList<Map>();campos.add(retornaParametros());JRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(campos);InputStreamrelatorio=getClass().getResourceAsStream("report3.jasper");// JasperReport jasperReport = JasperCompileManager.compileReport(getClass().getResourceAsStream("report3.jrxml")); Mapparameters=newHashMap();/* * Mando o jasper gerar o relatório. Nesse caso passo o map, * já que ele tem dois parâmetros que serão utilizados */JasperPrintprint=JasperFillManager.fillReport(relatorio,retornaParametros(),ds);// Gero o PDFbyte[]pdf=preenchePdf(print);os.write(pdf);}catch(Exceptione){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) ...
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
egilsoncabral
Galera colocando minha classe completa para melhor analise:
packagebr.com.spg.gestaoprojetos.relatorio.jasper;importjava.awt.image.BufferedImage;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.ServiceLoader;importjavax.faces.context.FacesContext;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.discovery.tools.Service;importnet.sf.jasperreports.engine.JRAbstractObjectFactory;importnet.sf.jasperreports.engine.JRDataSource;importnet.sf.jasperreports.engine.JRException;importnet.sf.jasperreports.engine.JasperCompileManager;importnet.sf.jasperreports.engine.JasperExportManager;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.engine.JasperReport;importnet.sf.jasperreports.engine.data.JRAbstractBeanDataSource;importnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource;importnet.sf.jasperreports.engine.design.JasperDesign;importnet.sf.jasperreports.engine.util.JRAbstractImageEncoder;importnet.sf.jasperreports.engine.util.JRLoader;importnet.sf.jasperreports.engine.xml.JRXmlLoader;importbr.com.spg.gestaoprojetos.model.ProjetoVO;publicclassRelatorioProjetoHorasApontadasJasper{privateCalendarinicio;privateCalendarfim;privateProjetoVOprojeto;privateBufferedImageimagem;privateStringsaida;privateSimpleDateFormatsdf=newSimpleDateFormat("dd/MM/yyyy");privatestaticJRDataSourcedados;publicRelatorioProjetoHorasApontadasJasper(BufferedImagebufferedimage,ProjetoVOprojetovo,Calendardatainicio,Calendardatafim){this.imagem=bufferedimage;this.projeto=projetovo;this.inicio=datainicio;this.fim=datafim;}privateMapretornaParametros(){Mapmap=newHashMap();map.put("inicio",sdf.format(inicio.getTime()));map.put("fim",sdf.format(fim.getTime()));map.put("projeto",projeto.getNome());returnmap;}privatestaticfinalStringTEMPLATE_PLACE="report3.jasper";publicvoidgerarRelatorio(ByteArrayOutputStreamos){saida=null;Stringjasper=TEMPLATE_PLACE;try{List<Map>campos=newArrayList<Map>();campos.add(retornaParametros());JRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(campos);InputStreamrelatorio=getClass().getResourceAsStream("report3.jasper");// JasperReport jasperReport = JasperCompileManager.compileReport(getClass().getResourceAsStream("report3.jrxml")); Mapparameters=newHashMap();/* * Mando o jasper gerar o relatório. Nesse caso passo o map, * já que ele tem dois parâmetros que serão utilizados */JasperPrintprint=JasperFillManager.fillReport(relatorio,retornaParametros(),ds);// Gero o PDFbyte[]pdf=preenchePdf(print);os.write(pdf);}catch(Exceptione){e.printStackTrace();}}privatebyte[]preenchePdf(JasperPrintprint)throwsJRException,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 */returna;}}
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]