Exception in thread "main" java.lang.Error: Unresolved compilation problems: Cannot make a static reference to the non-static method ataqueNW(char[][], int, int, int, int) from the type OitoRainhas ataque cannot be resolved to a variable

public class OitoRainhas {

public static void main(String[] args) {
	boolean ataque;
	int numLinhas = 4;
	int numColunas = 4;
	int i;
	int j;
	int iQ;
	int jQ;
	char[][] tabuleiro = new char[numLinhas][numColunas];		
	int numDeRainhas = 1;
	int numMaxRainhas = 4;

	for (i = 0; i < numLinhas; i++) {
		for (j = 0; j < numColunas; j++) {
			tabuleiro[i][j] = '0';
		}
	}

	tabuleiro[0][0] = 'Q';
	iQ = 0;
	jQ = 0;

	while (numDeRainhas <= numMaxRainhas) {
		
		ataque = ataqueNW(tabuleiro, iQ, jQ, numLinhas, numColunas);
		System.out.printf("Ataque NW: %b\n", ataque);

		ataqueNE(tabuleiro, iQ, jQ, numLinhas, numColunas);
		System.out.printf("Ataque NE: %b\n", ataque);

		ataqueSW(tabuleiro, iQ, jQ, numLinhas, numColunas);
		System.out.printf("Ataque SW: %b\n", ataque);

		ataqueSE(tabuleiro, iQ, jQ, numLinhas, numColunas);
		System.out.printf("Ataque SE: %b\n", ataque);

		ataqueN(tabuleiro, iQ, jQ, numLinhas, numColunas);
		System.out.printf("Ataque N: %b\n", ataque);

		ataqueS(tabuleiro, iQ, jQ, numLinhas, numColunas);
		System.out.printf("Ataque S: %b\n", ataque);

		ataqueW(tabuleiro, iQ, jQ, numLinhas, numColunas);
		System.out.printf("Ataque W: %b\n", ataque);

		ataqueE(tabuleiro, iQ, jQ, numLinhas, numColunas);
		System.out.printf("Ataque E: %b\n", ataque);
		
		
		if (ataque == false) {
			desenhaTabuleiro(tabuleiro, numLinhas, numColunas);
			numDeRainhas++;
		}
	}

}	

public static void desenhaTabuleiro(char[][] tabuleiro, int numLinhas, int numColunas) {
	for (int i = 0; i < numLinhas; i++) {
		for (int j = 0; j < numColunas; j++) {
			System.out.printf("%c ", tabuleiro[i][j]);
		}
		System.out.println(" "); // muda de linha
	}
}



public boolean ataqueNW(char[][] tabuleiro, int iQ, int jQ, int numLinhas, int numColunas) {
	int i = iQ;
	int j = jQ;
	boolean ataque = false;
	
	while (i != 0 && j != 0 && tabuleiro[i][j] != 'Q') {
		ataque = false;
		i--;
		j--;
	}

	if (tabuleiro[i][j] == 'Q') {
		ataque = true;
	}
	return ataque;
}

public boolean ataqueNE(char[][] tabuleiro, int iQ, int jQ, int numLinhas, int numColunas) {
	int i = iQ;
	int j = jQ;
	boolean ataque = false;
	while (i != 0 && j != 0 && tabuleiro[i][j] != 'Q') {
		ataque = false;
		i--;
		j++;
	}

	if (tabuleiro[i][j] == 'Q') {
		ataque = true;
	}
	
	return ataque;
}

public boolean ataqueSW(char[][] tabuleiro, int iQ, int jQ, int numLinhas, int numColunas) {
	int i = iQ;
	int j = jQ;
	boolean ataque = false;
	
	while (i != numLinhas && j != 0 && tabuleiro[i][j] != 'Q') {
		ataque = false;
		i++;
		j--;
	}

	if (tabuleiro[i][j] == 'Q') {
		ataque = true;
	}
	
	return ataque;
}

public boolean ataqueSE(char[][] tabuleiro, int iQ, int jQ, int numLinhas, int numColunas) {
	int i = iQ;
	int j = jQ;
	boolean ataque = false;
	
	while (i != numLinhas && j != 0 && tabuleiro[i][j] != 'Q') {
		ataque = false;
		i++;
		j++;
	}

	if (tabuleiro[i][j] == 'Q') {
		ataque = true;
	}
	
	return ataque;
}

public boolean ataqueN(char[][] tabuleiro, int iQ, int jQ, int numLinhas, int numColunas) {
	int i = iQ;
	int j = jQ;
	boolean ataque = false;
	
	while (i != 0 && tabuleiro[i][j] != 'Q') {
		ataque = false;
		i--;
	}

	if (tabuleiro[i][j] == 'Q') {
		ataque = true;
	}
	
	return ataque;
}

public boolean ataqueS(char[][] tabuleiro, int iQ, int jQ, int numLinhas, int numColunas) {
	int i = iQ;
	int j = jQ;
	boolean ataque = false;
	
	while (i != numLinhas && tabuleiro[i][j] != 'Q') {
		ataque = false;
		i++;
	}

	if (tabuleiro[i][j] == 'Q') {
		ataque = true;
	}
	return ataque;
}

public boolean ataqueW(char[][] tabuleiro, int iQ, int jQ, int numLinhas, int numColunas) {
	int i = iQ;
	int j = jQ;
	boolean ataque = false;
	
	while (j != 0 && tabuleiro[i][j] != 'Q') {
		ataque = false;
		j--;
	}

	if (tabuleiro[i][j] == 'Q') {
		ataque = true;
	}
	return ataque;
}

public boolean ataqueE(char[][] tabuleiro, int iQ, int jQ, int numLinhas, int numColunas) {
	int i = iQ;
	int j = jQ;
	boolean ataque = false;
	
	while (j != numColunas && tabuleiro[i][j] != 'Q') {
		ataque = false;
		j++;
	}

	if (tabuleiro[i][j] == 'Q') {
		ataque = true;
	}
	return ataque;
}

}

Você tentou instanciar um método não-estático em uma main(String[] args) estática.
Para resolver basta assinar esse método como static.

Obrigado!