为什么 (String[] args) 不用作 BlueJ 中的主要方法参数?

Why are (String[] args) not used as main method arguments in BlueJ?

我一直在使用 Java IDE - BlueJ 但我不明白为什么不能将 main 方法定义为

public static void main(String[] args)

在里面。我尝试时遇到语法错误。

阅读文档,例如How do I call a main method in BlueJ, and how do I pass it arguments?:

How do I call a main method in BlueJ, and how do I pass it arguments?

You can call a main method in the same way as you call any static method in Java - by right-clicking on the class in the class diagram, and selecting the method from the pop-up menu.

When you call the main method from a class, you will see a parameter entry field that prompts you for the array of strings that the main method takes as a parameter.

By default, the parameter is

{ }

(an empty array, no parameters). If you want to pass, say, three parameters, from a command line you would write

java MyClass one two three

In BlueJ, you use the following parameter for "main" in the dialog text field:

{ "one", "two", "three" }

This passes an array of the three strings, just as the command shell does.

如您所见,如果将 main 方法定义为 public static void main(String[] args),BlueJ 不会抛出语法错误。为什么要这样做?这是 Java 程序的主要方法的标准标识。 (如果你仍然遇到语法错误,那么如果你可以在你的问题中添加 window 的快照会很有帮助,就像我在答案中所做的那样,显示编译器错误.)

在 BlueJ 中,您并不是真正的 运行 程序(只是为了说):您只是 select right-clicking 在 [=52] 上开始执行的方法=] 图标。 BlueJ 是初学者 IDE。在现实生活中,Java 程序并不像您在 BlueJ 中那样 运行。你可以看到,如果你使用像 JCreator 或 NetBeans 这样的 IDEs。 Java 程序的执行方式与您在计算机上执行任何程序的方式相同。 .class文件是运行,主要方法由jre自动执行。但是为了让系统识别main方法,你必须这样定义main方法 - public static void main(String[] args) - 这是标准方式.

如果您在 windows cmd 中使用命令 javac[=35 编译并 运行 一个 java 程序,而不是使用 BlueJ =] 和 java,如果你写 main()[=35,你会看到 compile-time 错误说 "main method not found" =] 而不是 main(String[] args)。下面是当 main 方法未正确定义时 NetBeans IDE 中发生的情况的快照。

而当 NetBeans 中的完美程序是 运行 时,