Java程序中是否必须使用Main方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

对于独立应用程序,您必须拥有

  1. 主要方法或
  2. 静态初始化器。

主要是首选。

另一答案

main方法是程序的默认入口点。如果你没有定义一个,然后尝试执行生成的jar,这就是你会看到的。如果您不想生成需要独立启动的程序,则不需要它 - 例如,其他程序或网站引用的jar。

另一答案

没有main method you application will have no entry point。是的,任何可执行程序都需要它。

另一答案

如果您尝试执行Java类,JVM将查找main方法来调用它。来自Java语言规范的CHAPTER 12 Execution

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将如何知道启动程序的位置?

另一答案

不,例如,不需要它。网络应用。它们不使用main()方法,但如果您正在测试或运行独立应用程序,要知道您期望的输出,您可能需要使用main()方法。

另一答案

您的Java应用程序或程序(不是每个类)都需要至少一个主要方法来运行它。你得到的不是编译错误,而是运行时错误。

另一答案

“当您使用与包含main()方法的类名相同的名称保存程序时,在执行时JVM将创建该类的对象,并且使用该对象,JVM将调用main()方法作为对象。主要()。

因此,如果缺少main()方法(静态初始化程序也缺失),那么它将抛出异常。“

对于Web应用程序,如上所述。

ref:Java Understanding Java main method on logic

以上是关于Java程序中是否必须使用Main方法?的主要内容,如果未能解决你的问题,请参考以下文章

jsp页面被tomcat引擎运行的时候组装成java片段,但是这些java片段怎么没有main方法作为程序的入口啊?

Java面试手册-基础篇Java中main()方法需要的参数是否必须为字符串数组?

一个java程序必须有main方法吗?

为什么Java的main方法必须是public static void?

java中main方法中的static函数不管是否在最后,都会最先执行吗?

课程作业02