错误:在类MyClass中找不到主方法,请将主方法定义为…

错误:在类MyClass中找不到主方法,请将主方法定义为…

新的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"

这意味着什么,什么能导致它,一个人应该做什么来解决它?


繁花不似锦
浏览 3008回答 3
3回答

慕工程0101907

当您使用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.方法必须是public.方法必须是static 2.方法的返回类型必须是void.该方法必须有一个参数,并且参数的类型必须是String[] 3.(论点)可以,可能使用varargs语法声明;String... args..看见这个问题想了解更多信息。这个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"如果遇到此错误,请检查是否有main方法,并使其满足上述所有6项要求。其中一个很难理解的变化是,当“main”中的一个或多个字符不是拉丁文-1字符时.但是一个Unicode字符看上去显示时相应的拉丁文-1字符。2-见为什么Java Main方法是静态的?以解释为什么要求该方法是静态的。3 - String必须对应于java.lang.String而不是名为String把它藏起来。

qq_花开花谢_0

问题是您没有public void main(String[] args)方法在尝试调用的类中。它一定是static必须有一个字符串数组参数(可以命名为任何)必须用小写字母拼成m-a-i-n。注意,您实际上已经指定了一个现有的类(否则错误就会不同),但是这个类缺少主方法。

胡说叔叔

其他答案都很好地总结了main..我想收集这些需求文档的引用。最权威的来源是VM规范(引自第二版)。如main不是语言特性,它在Java语言规范中没有考虑。2.17.1执行-虚拟机启动5.2虚拟机启动另一个很好的资源是应用程序启动程序本身的文档:Java-Java应用程序启动程序
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java