Java程序中是否必须使用Main方法?
编写java程序需要主要方法吗?
这是我的代码:
package example; public class HelloWorld { public HelloWorld() { } public String getHelloWorld() { return "Hello From Java!"; } }
它在编译时显示错误:
java.lang.NoSuchMethodError: main Exception in thread "main"
java程序中不需要main方法。 正如其他人所指出的,Web应用程序不使用main方法。
在独立应用程序中甚至不需要它。 考虑
class JavaAppWithoutMain { static { System . out . println ( "Hello World!" ) ; } }
我编译并运行并获得以下结果:
Hello World! Exception in thread "main" java.lang.NoSuchMethodError: main
对于独立应用程序,您必须拥有
- 主要方法或
- 静态初始化器。
主要是首选。
main
方法是程序的默认入口点。 如果你没有定义一个,然后尝试执行生成的jar,这就是你会看到的。 如果您不想生成需要独立启动的程序,则不需要它 – 例如,其他程序或网站引用的jar。
没有main
方法,您的应用程序将没有入口点 。 是的,任何可执行程序都需要它。
如果您尝试执行Java类,JVM将查找调用它的main
方法。 从第12章 Java语言规范的执行 :
Java虚拟机通过加载指定的类,然后在此指定的类中调用方法
main
来启动。 第12.1节概述了执行main
涉及的加载,链接和初始化步骤,作为本章概念的介绍。 更多部分详细说明了加载(第12.2节) ,链接(第12.3节)和初始化(第12.4节)的细节 。
并非所有类都需要main
,只需要作为执行“入口点”的类。
您收到此错误消息的原因是您尝试使用java(Windows上的java.exe)运行一个类,并且它希望找到一个main()方法。
此方法不是必需的,但它可以形成启动应用程序的入口点。 您可以按如下方式重写您的课程,以达到您所寻求的结果:
package example; public class HelloWorld { // Running a class using java invokes this method public static void main(String[] args) { HelloWorld hw = new HelloWorld(); System.out.println( hw.getHelloWorld() ); } public HelloWorld() { } public String getHelloWorld() { return "Hello From Java!"; } }
独立应用程序需要main,因为它是入口点。 JVM将如何知道启动程序的位置?
不,例如Web应用程序不需要它。 它们不使用main()
方法,但如果您正在测试或运行独立应用程序,要了解您期望的输出,则可能需要main()
方法。
您的Java应用程序或程序(不是每个类)都需要至少一个主要方法来运行它。 你得到的不是编译错误,而是运行时错误。
“当您使用与包含main()方法的类名相同的名称保存程序时,在执行时,JVM将创建该类的对象,并且使用该对象,JVM将调用main()方法作为对象。主要()。
因此,如果缺少main()方法(静态初始化程序也缺失),那么它将抛出exception。“
对于Web应用程序,如上所述。
ref: Java了解逻辑上的Java主方法