Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con NullPointerException

Estas en el tema de Problema con NullPointerException en el foro de Java en Foros del Web. Hola a todos, tengo un problema con este método, tiene que ir verificando las fechas que se ingresan con la de hoy, entre ellas, y ...
  #1 (permalink)  
Antiguo 29/09/2010, 09:34
 
Fecha de Ingreso: octubre-2009
Mensajes: 9
Antigüedad: 14 años, 6 meses
Puntos: 0
Problema con NullPointerException

Hola a todos, tengo un problema con este método, tiene que ir verificando las fechas que se ingresan con la de hoy, entre ellas, y que una búsqueda retorne más de 3 objetos, si aparece error me tiene que devolver que hubo error, sino el objeto entero:
Código:
	public DTOTrabajadorYRol ingresarVigencia(Date fechaInicioRol, Date fechaFinRol){   //inicio metodo ingresarVigencia
            DTOTrabajadorYRol dtoTrabajadorYRol = new DTOTrabajadorYRol();
            boolean valor = false;
            Calendar cal = new GregorianCalendar();

            //FECHA INICIO MENOR FECHA HOY
            if(valor == false){
            int year = cal.get(Calendar.YEAR);     //devuelve el anio corriente del sistema
            int month = cal.get(Calendar.MONTH);      //devuelve el mes actual cooriende del sistema
            int day = cal.get(Calendar.DAY_OF_MONTH);     //devuelve el dia actual corriente del sistema
                if(fechaInicioRol.getYear() <= year){    //inicio if1
                 if(fechaInicioRol.getMonth() < month){    //inicio if2
                   dtoTrabajadorYRol.setHayError("FIFH");
                   valor = true;
                 }     //fin if2
                if((fechaInicioRol.getMonth() == month) && (fechaInicioRol.getDate() < day)){    //inicio if3
                   dtoTrabajadorYRol.setHayError("FIFH");
                   valor = true;
                }   // fin if3
                }    // fin if1
            }   //FECHA INICIO MENOR FECHA HOY

               //FECHA INICIO MAYOR FECHA FIN
            if(valor == false){   //inicio if
                if(fechaInicioRol.after(fechaFinRol)){   //inicio if
                        dtoTrabajadorYRol.setHayError("FIFF");
                        valor = true;
                }    //fin if
            }   //fin if
               //FECHA INICIO MAYOR FECHA FIN

            ArrayList<Object> trabajadoresDisponibles = new ArrayList<Object>();

               //MENOS DE 3 TRABAJADORES
            if(valor == false){
            Expresion criterioVigencia = FachadaPersistencia.getInstance().crearCriterio("fechaFinRol", "<", fechaInicioRol);
            ArrayList<Object> trabajadoresRol1 = new ArrayList<Object>();
            trabajadoresRol1 = FachadaPersistencia.getInstance().buscar("TrabajadorRol", criterioVigencia);
            for( int m = 0; m < trabajadoresRol1.size(); m++){   //inicio for
                trabajadoresDisponibles.add(((TrabajadorRol)trabajadoresRol1.get(m)).getTrabajador());
            }    //fin for
            if(trabajadoresDisponibles.size() < 3){   //inicio if
                dtoTrabajadorYRol.setHayError("TM3");  // no hay por lo menos 3 trabajadores disponibles
                valor = true;
            }   //fin if
            }   //fin if
               //MENOS DE 3 TRABAJADORES

               //RETORNA LOS TRABAJADORES
            if(valor == false){
            Expresion criterio = (Criterio) FachadaPersistencia.getInstance().crearCriterio("codigoRol", ">", 0);
            ArrayList<Object> roles = new ArrayList<Object>();
            roles = FachadaPersistencia.getInstance().buscar("Rol", criterio);
            for(Object rol : roles){      //inicio for1
                DTORol dtoRol = new DTORol();
                dtoRol.setCodigoRol(((Rol)rol).getCodigoRol());
                dtoRol.setNombreRol(((Rol)rol).getNombreRol());
                dtoTrabajadorYRol.setDTORol(dtoRol);
            } //    fin for1
            for(int i = 0; i < trabajadoresDisponibles.size(); i++){        //inicio for2
                String nombre = ((Trabajador)trabajadoresDisponibles.get(i)).getNombre();
                String apellido = ((Trabajador)trabajadoresDisponibles.get(i)).getApellido();
                int legajo = ((Trabajador)trabajadoresDisponibles.get(i)).getLegajo();
                ArrayList<Trabajo> trabajos = ((Trabajador)trabajadoresDisponibles.get(i)).getTrabajo();
                DTOTrabajador dtoTrabajador = new DTOTrabajador();
                dtoTrabajador.setApellido(apellido);
                dtoTrabajador.setLegajo(legajo);
                dtoTrabajador.setNombre(nombre);
                for(int k = 0; i < trabajos.size(); k++){
                    dtoTrabajador.setNombreTrabajo(trabajos.get(i).getNombreTrabajo());
                }
                dtoTrabajadorYRol.setDTOTrabajador(dtoTrabajador);
            }    //fin for 2
            this.fechaFinRol = fechaFinRol;
            this.fechaInicioRol = fechaInicioRol;
            dtoTrabajadorYRol.setFechaInicioRol(this.fechaInicioRol);
            dtoTrabajadorYRol.setFechaFinRol(this.fechaFinRol);
            this.dtoTrabajadorYRol1 = dtoTrabajadorYRol;
            }
                //RETORNA LOS TRABAJADORES
            return dtoTrabajadorYRol;
	}   //fin metodo ingresarVigencia
Trato de probarlo y me tira el error de NullPointerException, creería que sería en el retorno de dtoTrabajadorYRol? hace muy poco que estoy con Java y no logro ver bien en donde está el problema.
Muchas gracias.
Saludos.
  #2 (permalink)  
Antiguo 29/09/2010, 10:21
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema con NullPointerException

Esa excepción se produce cuando estás intentando ejecutar algún método sobre un objeto null (inexistente). Lo primero que te puede decir el origen es la traza de la excepción (archivo y línea).

Por si con eso no te llega.

Otra forma de depurar es introducir en tu IDE puntos de interrupción y ejecutar a partir de los mismos el código línea a línea.

Otra forma sería haciendo impresiones por pantalla (con System.out) a cada linea de código. La línea posterior a la última que se muestre por pantalla sería la que falle.

Una última forma es configurar un archivo de logging, por ejemplo importando Log4j a tu proyecto, y realizar lo mismo de antes pero con elementos de log.

///

La solución a tu problema pasa por analizar si ese objeto null debe venir null en algunos casos o no, y corregir el problema en caso de que no pueda venir null, o controlar el caso concreto en caso de que pueda venir null, como se muestra a continuación:
if (objeto != null ) {
//Tus funciones
} else {
//Hacer otra cosa o no hacer nada (útil por si quieres mandar un mensaje de aviso)
}

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:29.