编程语言
首页 > 编程语言> > java – “错误:在MyClass类中找不到主要方法,请将main方法定义为……”

java – “错误:在MyClass类中找不到主要方法,请将main方法定义为……”

作者:互联网

Java程序员在尝试运行Java程序时经常会遇到这些消息.

Error: Main method not found in class MyClass, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
Error: Main method is not static in class MyClass, please define the main method as:
   public static void main(String[] args)
Error: Main method must return a value of type void in class MyClass, please
define the main method as:
   public static void main(String[] args)
java.lang.NoSuchMethodError: main
Exception in thread "main"

这是什么意思,什么可以导致它,以及应该怎么做才能解决它?

解决方法:

使用java命令从命令行运行Java应用程序时,例如,

java some.AppName arg1 arg2 ...

该命令加载您指定的类,然后查找名为main的入口点方法.更具体地说,它正在寻找声明如下的方法:

package some;
public class AppName {
    ...
    public static void main(String[] args) {
        // body of main method follows
        ...
    }
}

入口点方法的具体要求是:

>该方法必须在提名类中.
>方法的名称必须是“main”,并且具有大写的1.
>该方法必须是公开的.
>该方法必须是静态的2.
>方法的返回类型必须为void.
>该方法必须只有一个参数,而参数的类型必须是String [] 3.

(可以使用varargs语法声明参数;例如String … args.有关更多信息,请参阅this question. String []参数用于从命令行传递参数,即使应用程序不使用命令行也是必需的参数.)

如果不满足上述任何一个要求,则java命令将失败并显示消息的某些变体:

Error: Main method not found in class MyClass, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

或者,如果您运行的是非常旧的Java版本:

java.lang.NoSuchMethodError: main
Exception in thread "main"

如果遇到此错误,请检查您是否有主方法,并且它满足上面列出的所有6个要求.

1 – 一个非常模糊的变化是当“main”中的一个或多个字符不是LATIN-1字符时……但是显示时看起来像对应的LATIN-1字符的Unicode字符.

2 – 有关为何要求该方法是静态的说明,请参见Why is the Java main method static?.

3 – String必须对应于java.lang.String,而不是隐藏它的名为String的自定义类.

标签:nosuchmethoderror,java,runtime-error,main
来源: https://codeday.me/bug/20190911/1803597.html