Provando il tuo codice mi esce questo errore:
codice:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
	at java.lang.String.<init>(String.java:211)
	at java.lang.String.copyValueOf(String.java:2880)
	at Test.aNagramma(Test.java:25)
	at Test.main(Test.java:35)
Si capisce molto bene che il motivo dell'errore è dovuto all'accesso all'array oltre i propri confini, causato quando nella dichiarazione del ciclo for definisci come condizione di fine ciclo i <= array.length. Nel tuo caso dovrebbe essere soltanto i < array.lenght, in quanto l'indicizzazione di un array in Java inizia da 0 e l'ultimo elemento è array.lenght - 1. Tuttavia il tuo codice nonostante questo continua a non funzionare e onestamente non capendo molto quello che fai all'interno del ciclo for ti propongo questa soluzione:
codice:
/*Scrivere un breve programma in java che dia in uscita tutte le possibili stringhe 
formate utilizzando una sola volta i caratteri 'c' ,'a' ,'r' ,'b' ,'o' ,'n' */

import java.util.Scanner;
import java.io.*;
import java.lang.*;

public class Test 
{
	public static String parola;
	public static void aNagramma(String txt)
	{
		char [] array=txt.toCharArray();
		int length=txt.length();
		char temp;
		//caso base parola di una sola lettera
		if(txt.length()==1) {
			System.out.println("la parola ha solo una lettera.....che vuoi anagrammare?!?");
		} else {
			for(int i = 0, j = array.length - 1; i <= j; i++, j--) {
				if (array[i] != array[j]) {
					System.out.println(array[i] + "!=" + array[j]);
					System.out.println("La parola non è un anagramma");
					System.exit(0);
				}	
			}
		
			System.out.println("La parola è un anagramma");
		}	
	}
	public static void main(String args[])
	{
		Scanner s=new Scanner(System.in);
		System.out.print("Inserisci la parola da anagrammare: ");
		parola=s.next();
		aNagramma(parola);
		
	}
}