Null Pointer - Relatorio Jasper [RESOLVIDO]

5 respostas
rollei
public class RelatorioQtdAgendamentoDiaPerito extends HttpServlet {
    private static final long serialVersionUID = -5506132259589301021L;
    private Logger logger = Logger.getLogger(RelatorioQtdAgendamentoDiaPerito.class);

    /**
     * 
     * @param req
     * @param res
     * @throws javax.servlet.ServletException
     * @throws java.io.IOException
     */
    @SuppressWarnings("unchecked")
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {

        String sep = File.separator;

        logger.info("Criando uma conexão ...");
        DBConnectMySQL dao = null;
        try {
            dao = new DBConnectMySQL();
        } catch (SQLException ex) {
            logger.error(ex);
        } catch (InstantiationException ex) {
            logger.error(ex);
        } catch (IllegalAccessException ex) {
            logger.error(ex);
        } catch (ClassNotFoundException ex) {
            logger.error(ex);
        }
        logger.info("Conexão: " + dao.getConnection());

        String path = getServletContext().getRealPath("/");
        String pathJasper =
                new StringBuilder()
                    .append(path)
                    .append("content")
                    .append(sep)
                    .append("reports")
                    .append(sep)
                    .toString();
        String pathImages =
                new StringBuilder()
                    .append(path)
                    .append("content")
                    .append(sep)
                    .append("images")
                    .append(sep)
                    .toString();

        logger.info("Inserindo parametros no Map ...");
        Map parametros = new HashMap();
        parametros.put("SUBREPORT_DIR", pathJasper);
        parametros.put("IMAGES_URI", pathImages);
        parametros.put("DATAINICIAL", req.getParameter("dataInicial"));
        parametros.put("DATAFINAL", req.getParameter("dataFinal"));

        try {
            logger.info("Caminho      : " + path);
            logger.info("CaminhoJasper: " + pathJasper);
            logger.info("CaminhoImages: " + pathImages);
            logger.info("Parametros   : " + parametros);
            logger.info(pathJasper + "RelatorioQtdAgendamentoDiaPeritoSAPE.pdf");
            
            logger.info("Criando impressão ...");
            JasperPrint impressao = JasperFillManager.fillReport(
                    new StringBuilder()
                        .append(pathJasper)
                        .append("RelatorioQtdAgendamentoDiaPeritoSAPE.jasper")
                        .toString(),
                    parametros,
                    dao.getConnection()
                    );

            logger.info("Exportando o pdf ...");
            JasperExportManager.exportReportToPdfFile(
                    impressao,
                    new StringBuilder()
                        .append(path)
                        .append("Relatorio")
                        .append(sep)
                        .append("RelatorioQtdAgendamentoDiaPeritoSAPE.pdf")
                        .toString()
                    );
            
            logger.info("Redirecionando para o pdf ...");
            res.sendRedirect("RelatorioQtdAgendamentoDiaPeritoSAPE.pdf");
        } catch (Exception ex) {
            logger.error("Erro ao gerar o relatorio: " + ex);
        } finally {
            if ( dao != null &&  dao.getConnection() != null) {
                try {
                    dao.connectionClose();
                } catch (SQLException ex) {
                    logger.error(ex);
                }
            }
        }
    }
}

log

[04/08/2008 04:46:40, 0] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:44) ### Criando uma conexão ... ### [04/08/2008 04:46:40,359] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:57) ### Conexão: com.mysql.jdbc.Connection@9903f4 ### [04/08/2008 04:46:40,359] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:77) ### Inserindo parametros no Map ... ### [04/08/2008 04:46:40,359] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:85) ### Caminho : C:\Subversion\agenda\FONTES\agenda\build\web\ ### [04/08/2008 04:46:40,359] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:86) ### CaminhoJasper: C:\Subversion\agenda\FONTES\agenda\build\web\content\reports\ ### [04/08/2008 04:46:40,375] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:87) ### CaminhoImages: C:\Subversion\agenda\FONTES\agenda\build\web\content\images\ ### [04/08/2008 04:46:40,375] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:88) ### Parametros : {SUBREPORT_DIR=C:\Subversion\agenda\FONTES\agenda\build\web\content\reports\, IMAGES_URI=C:\Subversion\agenda\FONTES\agenda\build\web\content\images\, DATAINICIAL=04/08/2008, DATAFINAL=08/08/2008} ### [04/08/2008 04:46:40,375] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:89) ### C:\Subversion\agenda\FONTES\agenda\build\web\content\reports\RelatorioQtdAgendamentoDiaPeritoSAPE.pdf ### [04/08/2008 04:46:41,484] INFO [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:91) ### Criando impressão ... ### [04/08/2008 04:46:41,594] ERROR [http-8080-1] (RelatorioQtdAgendamentoDiaPerito.java:115) ### Erro ao gerar o relatorio: java.lang.NullPointerException ###

esta dando um erro na funcao JasperFillManager.fillReport …

mas eu jah testei o caminho do jasper, esta apontando para o lugar certo
jah testei o hash, nem ele nem nenhum dos parametros esta nulo
e jah testei a conexao, sim … esta retornando uma conexao valida

no ireport o relatorio esta rodando, entao nao deve ser nenhum erro no relatorio e eu jah verifiquei o nome dos parametros, sao os mesmo na minha aplicacao

:cry: :cry: :cry: :cry:

ajuda

[]'s

5 Respostas

peczenyj

Tente logar a StackTrace

E

O que acontece muito é você criar um field ou um parâmetro, mas por algum motivo(erro de digitacao, esqueceu mesmo) você não passa ele pro jasper. Daí ele tenta buscar o valor deste field e da null pointer exception, porque ele não existe.

Da um conferida nisso.

Att.

rollei
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:88)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
        at br.gov.ce.seplag.agenda.relatorios.RelatorioQtdAgendamentoDiaPerito.service(RelatorioQtdAgendamentoDiaPerito.java:92)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        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:175)
        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:844)
        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)

eduardo, lah no meu relatorio soh tenho 4 parametros, DATAINICIAL, DATAFINAL, SUBREPORT_DIR e IMAGES_URI
ae no log da aplicacao voce pode ver que eu nao esqueci de passar nenhum parametros, todos estao com valores validos :confused:

rollei

nao sei se isso tem alguma influencia, mas no subrelatorio tem uma crosstab

No relatorio principal tenho 4 parametros, pelo log voces podem ver que os 4 parametros passados tem valores validos, no subrelatorio tenho 2 parametros DATAINICIAL, DATAFINAL … ambos estao sendo passados para o subrelatorio no relatorio principal, tanto que quando eu rodo o Relatorio no Ireports ele funciona normal :confused:

rollei

cara consegui resolver meu problema. bem, faz pouco tempo que mudei para a versao 3.0 do ireports e no projeto a lib ainda era o jasper2. alguma coisa

mudei a versao do jar para 3.alguma coisa e deu certo

[]'s

Criado 4 de agosto de 2008
Ultima resposta 5 de ago. de 2008
Respostas 5
Participantes 3