StackOverflowError....=(

bom, o meu codigo ta dando esse erro ai, compila direito mas na hora de rodar da isso… como q eu concerto isso?? esse codigo eh de ordenação topologica.

[code]import java.io.;
import javax.swing.
;

class OrdemTop {

public void ler()  throws IOException {
 	
 	int aux=0, tempo=0, controle=0;;
    InputStream is = getClass().getResourceAsStream ("teste\teste.txt");
    BufferedReader br = new BufferedReader (new InputStreamReader (is));
    String linha="";;
    
    linha = br.readLine();
   	aux=Integer.parseInt(linha);
	char matriz[][] = new char[aux][aux];
	int fecha[] = new int[aux];
	int anterior[] = new int[aux];
   	boolean visitado[] = new boolean[aux];
	    	
	for(int i=0; i<aux; i++){//descobre a matriz
		linha += br.readLine();
	}
	
	for(int i=0; i<aux; i++){//inicializa a matriz
		for(int j=0; j<aux; j++){
			matriz[i][j] = linha.charAt(i+j);
		}
	}
	
	for(int i=0; i<aux; i++){//inicializa anterior com zero e visitado(marca todos os vertices) como naum visitado
		anterior[i]=0;
		visitado[i]=false;
	}
	
	visita(matriz, visitado, fecha, controle, aux, tempo, anterior);
	ordenaTop(fecha, aux);
	
	br.close(); // br.close já fecha "is" automaticamente

}

public void ordenaTop(int fecha[], int aux){
	String ordena=Float.toString(fecha[0]);
	int menor=fecha[0];
	
	for(int i=1; i<aux; i++){
		if(fecha[i]<menor){
			menor = fecha[i];
			ordena = Float.toString(fecha[i]) + ordena;
		}else{
			ordena += Float.toString(fecha[i]);
		}
	}
	System.out.println(ordena);
	
}
    
public void visita(char matriz[][], boolean visitado[], int fecha[], int controle, int aux, int tempo, int anterior[]){
	
	tempo++;//adiciona mais um ao tempo...
	for(int j=0; j<aux; j++){
		
		visitado[controle] = true;//marca o vetor como visitado...
		    			
   		if( (matriz[controle][j]=='1') && (visitado[controle]==false) ){
			anterior[j]=controle;//pra gravar qual é o vertice do anterior do proximo
			controle = j;//acha o proximo vertice
			visita( matriz, visitado, fecha, controle, aux, tempo, anterior );
   		}
		
		if( j==(aux-1) ) {
			fecha[controle]=tempo;//acha o tempo em que se volta a partir do vertice
			visita( matriz, visitado, fecha, anterior[controle], aux, tempo, anterior );
   		}
	}
	
	for(int i=0; i<aux; i++){//verifica se tem algum vertice não visitado...
		if(visitado[i]==false){
			visita( matriz, visitado, fecha, i, aux, tempo, anterior );
		}
	}
	    	
}
 
public static void main(String[] args) throws IOException {
   OrdemTop tf = new OrdemTop();
   tf.ler();
   System.exit(0);
}

}[/code]
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Ratinho[/color][/size] :joia:

isso acontece quando nao ha fim numa chamada recursiva, ou seja, voce vai empilhando as variaveis na memoria ate que a pilha estoura!
provavelmente voce precisa garantir mais alguma coisa nesse seu metodo visita() para que ele nao fique sendo chamado recursivamente ate estourar sua pilha.

espero ter ajudado