Tengo la siguiente función la cual se supone que deberia funcionar bien, pero sin embargo me dice que la funcion boolean debe tener un return, cosa que está contemplada y tiene varios, no se cual es el fallo que estoy teniendo, ¿Podriais echarme una mano? Gracias.
   Cita:  public static boolean tieneRol(String dni_usuario, int rol){
 
		if(rol==ROL_ACCESO_PUBLICO){
			//Cualquiera puede acceder
			return true;
		}else{
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet resultados = null;
		if(rol==ROL_ACCESO_PUBLICO){
			//Cualquiera puede acceder   //Es administrador por lo que tiene acceso ilimitado
			LOG.debug("El usuario '" + dni_usuario + "' SI tiene el rol necesario" + rol);
			return true;
		}
 
		try{
			con = getConexion();
			String sql = SQL_SELECT_ROLES_USUARIO;
			LOG.debug("Ejecutando sentencia: '" + sql + "'");
			stmt = con.prepareStatement(sql);
			stmt.setString(1,dni_usuario);
			LOG.debug("dni '" + dni_usuario + "'");
			resultados = stmt.executeQuery();
 
                        while(resultados.next()){
				int Urol = resultados.getInt(1);
				LOG.debug("Urol '" + Urol + "'");
				if(Urol==ROL_ADMINISTRADOR){
				//Cualquiera puede acceder   //Es administrador por lo que tiene acceso ilimitado
					LOG.debug("El usuario '" + dni_usuario + "' SI tiene el rol necesario" + rol);
					return true;
				}else{
					if(Urol==rol){
						//Tiene el rol necesario para entrar
						LOG.debug("El usuario '" + dni_usuario + "' SI tiene el rol necesario" + rol);
						return true;
					}else{
						LOG.debug("El usuario '" + dni_usuario + "' NO tiene el rol necesario" + rol);
						return false;
					}
				}
			}
		} catch ( Exception e ){
			LOG.error(e);
			LOG.debug("El usuario '" + dni_usuario + "' NO tiene el rol" + rol);
			return false;
		} finally{
			try{
				resultados.close();
			}catch(Exception e) {}
			try{
				stmt.close();
			} catch (Exception e){}
			try{
				con.close();
			}catch(Exception e){}
		}
		}
	}