I've been using the Java IDE - BlueJ but I can't understand why the main method cannot be defined as
public static void main(String[] args)
in it. I get a syntax error when I try it.
As you can see, BlueJ throws no Syntax error if you define the main method as public static void main(String[] args). And why should it? That's the standard identity of the main method of a Java program. (If you still get a syntax error, then it'd be helpful if you can add a snap of the window in your question, like I've done in the answer, showing the compiler error.)
In BlueJ, you don't really run the program (just for saying): you just select the method to start executing from by right-clicking on the class Icon. BlueJ is a beginners' IDE. In real life, Java programs are not run the way you do in BlueJ. You can see that if you use IDEs like JCreator or NetBeans. Java programs are executed the way you execute any program on a computer. The .class file is run and the main method is automatically executed by the jre. But for the system to identify the main method, you have to define the main method this way - public static void main(String[] args) - this is the standard manner.
Instead of using BlueJ, if you compile and run a java program in windows cmd using the commands javac and java respectively, you will see the compile-time error saying "main method not found" if you write main() instead of main(String[] args). Below is a snap of what happens in NetBeans IDE when the main method is not defined properly.
And when the perfect program is run in NetBeans,