Java.lang.NullPointerException [RESOLVIDO]

estou a tentar registar um utilizador e dá erro java.lang.NullPointerException e não consigo descobrir porquê

deixo o erro e o codigo das classes

Exception in thread "main" java.lang.NullPointerException at sge5f.SGE.MenuPrincipalFuncionarios_Utilizadores_Inserir_Docente_Responsavel(SGE.java:297) at sge5f.SGE.MenuPrincipalFuncionarios_utilizadores(SGE.java:209) at sge5f.SGE.MenuPrincipalFuncionarios(SGE.java:176) at sge5f.SGE.Login(SGE.java:130) at sge5f.SGE.opcaoEntradaDados(SGE.java:95) at sge5f.SGE.main(SGE.java:19)

[code]public static void MenuPrincipalFuncionarios_Utilizadores_Inserir_Docente_Responsavel(Funcionarios _funcionarios)
{
//valida atraves do ficheiro utilizadores, pois só assim verifica se o BI do novo utilizador ja se encontra registado no sistema
ArrayList consultaUtilizadores=new ArrayList ();
consultaUtilizadores=(ArrayList) trataf.LeFicheiro(“Utilizadores.dat”);

	//para actualizar caso se adicione utilizador
	 ArrayList <DocenteResponsavel> consultaDocenteResponsavel =new ArrayList <DocenteResponsavel>();
	 consultaDocenteResponsavel=(ArrayList<DocenteResponsavel>) trataf.LeFicheiro("DocenteResponsavel.dat");
		
	 //Novo array que vou utilizar para adicionar o novo utilizador
	 ArrayList <Utilizadores> consultaUtilizadoresAux=new ArrayList <Utilizadores>();
	 consultaUtilizadoresAux=null;
		
	 if(consultaUtilizadores==null || consultaUtilizadores.size()==0 )
		 menu.M_Aviso("Não existem Utilizadores Registados!");
	 else
	 {
		 DocenteResponsavel _docenteResponsavel= menu.M_MenuPrincipalFuncionarios_Utilizadores_Inserir_DocenteResponsavel(consultaDocenteResponsavel, _funcionarios);
		 //  caso o método devolva Alunos
		if(_docenteResponsavel !=null)
		{				
			consultaUtilizadoresAux=_funcionarios.verificaInsereDcenteResponsavel(_docenteResponsavel,consultaUtilizadores);
			
			if (consultaUtilizadoresAux!=null)
			{	//acrescenta no array 
				consultaDocenteResponsavel.add(_docenteResponsavel); //é aqui que dá o o NULLPOINTEREXCEPTION
				
				trataf.escreve(consultaUtilizadoresAux, "Utilizadores.dat");
				
				trataf.escreve(consultaDocenteResponsavel, "DocenteResponsavel.dat");
				menu.M_Aviso("Utiizador adicionado ");
				
				MenuPrincipalFuncionarios(_funcionarios);
			}
			menu.M_Aviso("Utilizador ja inserido no sistema!");
			MenuPrincipalFuncionarios(_funcionarios);
		}
		
	 }		

} [/code]

[code] public DocenteResponsavel M_MenuPrincipalFuncionarios_Utilizadores_Inserir_DocenteResponsavel(ArrayList carregaDocenteResponsavel, Funcionarios _func)
{

	int opc=0;
	String nomeAux="";
	String moradaAux="";
	String localidadeAux="";
	String contactoAux="";
	String usernameAux="";
	String passwordAux="";
	int tipouserAux=2;
	int biAux=0;
	int nifAux=0;
	int idadeAux=0;
	String areaAux="";
	
	DocenteResponsavel _docenteResponsavel=null;
	Funcionarios _funcionariosTemp=new Funcionarios();
	
	
    Scanner scan = new Scanner(System.in);  
    Scanner scan1 = new Scanner(System.in);
    do{      

    	try{
            System.out.print ('\f');                
            System.out.println("\t-> SGE ->Gestão de Utilizadores<-\n");    
            System.out.println("\t---->Inserir Docente Responsavel ao sistema\n");
            System.out.println("Indique o nome do Docente Responsavel :\n");
            nomeAux=scan.nextLine();
            System.out.println("Indique a  morada do Docente Responsavel\n");
            moradaAux=scan.nextLine();
            System.out.println("Indique a localidade Docente Responsavel\n");
            localidadeAux=scan.nextLine();
            System.out.println("Indique o contacto do Docente Responsavel\n");
            contactoAux=scan.nextLine();
            System.out.println("Indique o username doDocente Responsavel\n");
            usernameAux=scan.nextLine();
            System.out.println("Indique a password do Docente Responsavel\n");
            passwordAux=scan.nextLine();
            System.out.println("Indique o BI do Docente Responsavel\n");
            biAux=scan.nextInt();
            System.out.println("Indique o NIF do Docente Responsavel\n");
            nifAux=scan.nextInt();
            System.out.println("Indique a idade do Docente Responsavel\n");
            idadeAux=scan.nextInt(); 
            System.out.println("Indique o a area do Docente Responsavel\n\n");
            areaAux=scan1.nextLine();
            System.out.println("1- Guardar Guardar\n "); 
            System.out.println("2- Limpar\n "); 
            opc=scan1.nextInt();
    	}
    	catch(InputMismatchException e)
    	{
    		System.err.println("Deve inserir os dados correctos nos campos especificados!\n\n");
    		_docenteResponsavel=null;
    	    String limpa =scan.nextLine();	    		
    	} 
    	if (opc==1)
    	{		    
    		_docenteResponsavel= new DocenteResponsavel(nomeAux,moradaAux,localidadeAux,contactoAux,usernameAux,passwordAux,tipouserAux,biAux,nifAux,idadeAux,areaAux);
	    }
      }	
    while (_docenteResponsavel==null || opc==2);                
    
    return _docenteResponsavel;
}[/code]

O problema estava nos Ficheiros.

Duas dicas:

Quando for procurar por algum erro, veja o stacktrace abaixo.

Exception in thread "main" java.lang.NullPointerException at sge5f.SGE.MenuPrincipalFuncionarios_Utilizadores_Inserir_Docente_Responsavel(SGE.java:297) at sge5f.SGE.MenuPrincipalFuncionarios_utilizadores(SGE.java:209) at sge5f.SGE.MenuPrincipalFuncionarios(SGE.java:176) at sge5f.SGE.Login(SGE.java:130) at sge5f.SGE.opcaoEntradaDados(SGE.java:95) at sge5f.SGE.main(SGE.java:19)
Olhe para o final a linha mais acima no trace: b[/b]

SGE.java é o nome do arquivo, e 297 é o número da linha com o problema. É só ir até essa linha e resolver o problema. Se a classe em questão não foi tua, procure abaixo no stack até achar a primeira classe tua, e o número da linha dela.

Segundo, NullPointerExceptions(NPE) só acontecem por um motivo:

String meuObjetoNulo = null;
meuObjetoNulo.acessarAlgumMétodo(); // Tentei acessar alguma coisa em um objeto nulo. Dá NPE.