a) O tipo primitivo long, com letra minúscula, que representa números. Como não é um objeto, não pode ter valor nulo, ou ser comparado com nulo.
b) O tipo Long (com letra maiúscula), que é uma classe que contém um long dentro. Ela é usada para quando você precisa passar um objeto para uma função (como o caso das listas, por exemplo).
Provavelmente você declarou a variável inicioSub como Long, enquanto seu método getInicioSub() retorna o valor com o tipo primitivo long. Acontece que desde o Java 5, o java é capaz de fazer a conversão automática de um Long para um long, e vice-versa.
Para resolver seu problema, troque a declaração de inicioSub de Long para long, e atribua sempre 0 no lugar de null.
E
Ellensmp
ViniGodoy:
Existem dois tipos diferentes dentro do Java:
a) O tipo primitivo long, com letra minúscula, que representa números. Como não é um objeto, não pode ter valor nulo, ou ser comparado com nulo.
b) O tipo Long (com letra maiúscula), que é uma classe que contém um long dentro. Ela é usada para quando você precisa passar um objeto para uma função (como o caso das listas, por exemplo).
Provavelmente você declarou a variável inicioSub como Long, enquanto seu método getInicioSub() retorna o valor com o tipo primitivo long. Acontece que desde o Java 5, o java é capaz de fazer a conversão automática de um Long para um long, e vice-versa.
Para resolver seu problema, troque a declaração de inicioSub de Long para long, e atribua sempre 0 no lugar de null.
Não funcionou continua dando o mesmo erro.
ViniGodoy
Pode postar o código completo?
E
Ellensmp
CLASSE ContacaoDias
packagemodel;importjava.util.Date;importjava.util.List;importjava.util.ArrayList;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.servlet.http.HttpServletRequest;importjava.text.SimpleDateFormat;publicclassContacaoDias{privateConexaoMysqlconexaoMysql;publicList<GSDiasSubtracao>Contacao(HttpServletRequestrequest,Stringid){List<GSDiasSubtracao>subList=newArrayList<GSDiasSubtracao>();GSDiasSubtracaosub=newGSDiasSubtracao();conexaoMysql=newConexaoMysql();Statementstate=null;ResultSetrs=null;//Formata data em formatos do tipo dia(dd), mês(MM), ano(yyyy)SimpleDateFormatsdf=newSimpleDateFormat("dd/MM/yyyy");try{state=conexaoMysql.getConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=state.executeQuery("SELECT * from processos where idProcessos = "+id+"");while(rs.next()){Stringinicio=rs.getString("real_inicioProcesso");Stringcoleta=rs.getString("real_envioColeta");Stringesclarecimento=rs.getString("real_esclarecimento");Stringpropostas=rs.getString("real_rectoPropostas");Stringanalise=rs.getString("real_analiseTecnica");Stringnegociacao=rs.getString("real_negocComercial");Stringhomologacao=rs.getString("real_homologacao");Stringcontrato=rs.getString("real_emissaoContrato");Stringaprovacao=null;if(rs.getString("real_inicioProcesso")!=null&&rs.getString("real_inicioProcesso")!=""){if(rs.getString("real_aprovGAGG")!=null&&rs.getString("real_aprovGAGG")!=""){aprovacao=rs.getString("real_aprovGAGG");}if(rs.getString("real_aprovDIPL")!=null&&rs.getString("real_aprovDIPL")!=""){aprovacao=rs.getString("real_aprovDIPL");}if(rs.getString("real_aprovDEEB")!=null&&rs.getString("real_aprovDEEB")!=""){aprovacao=rs.getString("real_aprovDEEB");}if(rs.getString("real_aprovUsuario")!=null&&rs.getString("real_aprovUsuario")!=""){aprovacao=rs.getString("real_aprovUsuario");}if(rs.getString("real_pautaDE")!=null&&rs.getString("real_pautaDE")!=""){aprovacao=rs.getString("real_pautaDE");}if(rs.getString("real_emitirDDE")!=null&&rs.getString("real_emitirDDE")!=""){aprovacao=rs.getString("real_emitirDDE");}}if(inicio!=null&&inicio!=""){if(coleta!=null&&coleta!=""){//Parse efeuta a validação para saber se uma data é válida com o formato dadoDateini=sdf.parse(inicio);Datecol=sdf.parse(coleta);//daysBetween//Subtrai as datas como números long, para descobrir o intervaloLongtempoInicio=col.getTime()-ini.getTime();//Calcula a quantidade de dias.LongtempoInicioTotal=((((tempoInicio/1000))/60)/60)/24;sub.setInicioSub(tempoInicioTotal);}if(esclarecimento!=null&&esclarecimento!=""){Dateescla=sdf.parse(esclarecimento);Datecol2=sdf.parse(coleta);LongtempoColeta=escla.getTime()-col2.getTime();LongtempoColetaTotal=((((tempoColeta/1000))/60)/60)/24;sub.setColetaSub(tempoColetaTotal);}if(propostas!=null&&propostas!=""){Dateescla2=sdf.parse(esclarecimento);Dateprop=sdf.parse(propostas);LongtempoEsc=prop.getTime()-escla2.getTime();LongtempoEscTotal=((((tempoEsc/1000))/60)/60)/24;sub.setEsclarecimentoSub(tempoEscTotal);}if(analise!=null&&analise!=""){Dateanal=sdf.parse(analise);Dateprop2=sdf.parse(propostas);LongtempoProp=anal.getTime()-prop2.getTime();LongtempoPropTotal=((((tempoProp/1000))/60)/60)/24;sub.setRectoPropostasSub(tempoPropTotal);}if(negociacao!=null&&negociacao!=""){Dateanal2=sdf.parse(analise);Datenegoc=sdf.parse(negociacao);LongtempoAnal=negoc.getTime()-anal2.getTime();LongtempoAnalTotal=((((tempoAnal/1000))/60)/60)/24;sub.setAnaliseTecnicaSub(tempoAnalTotal);}if(homologacao!=null&&homologacao!=""){Datehom=sdf.parse(homologacao);Datenegoc2=sdf.parse(negociacao);LongtempoNegoc=hom.getTime()-negoc2.getTime();LongtempoNegocTotal=((((tempoNegoc/1000))/60)/60)/24;sub.setNegocComercialSub(tempoNegocTotal);}if(aprovacao!=null&&aprovacao!=""){Datehom2=sdf.parse(homologacao);Dateaprov=sdf.parse(aprovacao);LongtempoHomo=aprov.getTime()-hom2.getTime();LongtempoHomoTotal=((((tempoHomo/1000))/60)/60)/24;sub.setHomologacaoSub(tempoHomoTotal);}if(contrato!=null&&contrato!=""){Datecont=sdf.parse(contrato);Dateaprov2=sdf.parse(aprovacao);LongtempoAprov=cont.getTime()-aprov2.getTime();LongtempoAprovTotal=((((tempoAprov/1000))/60)/60)/24;sub.setAprovacaoSub(tempoAprovTotal);}Longsoma=null;if(sub.getInicioSub()!=0&&sub.getInicioSub()!=null){soma=sub.getInicioSub();if(sub.getColetaSub()!=0&&sub.getColetaSub()!=null){soma+=sub.getColetaSub();}if(sub.getEsclarecimentoSub()!=0&&sub.getEsclarecimentoSub()!=null){soma+=sub.getEsclarecimentoSub();}if(sub.getRectoPropostasSub()!=0&&sub.getRectoPropostasSub()!=null){soma+=sub.getRectoPropostasSub();}if(sub.getAnaliseTecnicaSub()!=0&&sub.getAnaliseTecnicaSub()!=null){soma+=sub.getAnaliseTecnicaSub();}if(sub.getNegocComercialSub()!=0&&sub.getNegocComercialSub()!=null){soma+=sub.getNegocComercialSub();}if(sub.getHomologacaoSub()!=0&&sub.getHomologacaoSub()!=null){soma+=sub.getHomologacaoSub();}if(sub.getAprovacaoSub()!=0&&sub.getAprovacaoSub()!=null){soma+=sub.getAprovacaoSub();}}sub.setSomaSub(soma);}else{/* inicio = " - "; */}}//fim while}catch(Exceptionerro){erro.printStackTrace();System.out.println("Erro ocorrido na classe ContacaoDias: n"+erro);returnnull;}finally{if(state!=null){//fechar os statments try{state.close();}catch(SQLExceptione){// TODO Auto-generated catch block e.printStackTrace();}}}subList.add(sub);returnsubList;}}
O problema é que o valor da variável inicioSub é nulo. Então, o primeiro teste inicioSub != 0 vai tentar converter a variável para um número, e isso gera uma NullPointerException. Para corrigir, inverta o teste: