java.lang.NoSuchMethodError main Exception in thread "main " 和 Error: Main 方法在类中找不到 Main 方法有什么区别



我有这个类

public class demo3 {
    private static  void sum()
    {       
    }
}

当我尝试运行此类课程时,我期望错误为java.lang.NoSuchMethodError main Exception in thread "main "

但是,输出有点不同,我得到了消息以下

Error: Main method not found in class demo3, please define the main method as:
   public static void main(String[] args)

现在,这让我对在这种情况下的好奇心,我将获得java.lang.nosuchmethoderror或在这种情况下,我将收到其他错误消息。

当您要求JVM开始运行的课堂中找不到public static void main(String[])时,您会收到Main method not found消息。也就是说,找不到整个程序的切入点。

如果您的(已经运行(代码尝试在编译时可用的类中调用一种方法,但在运行时使用的类别(例如,您编译了(,您会收到java.lang.NoSuchMethodError消息。根据图书馆的一个版本,然后在不重新编译的情况下更新图书馆罐(。这可以在程序中的任何时刻发生。

JLS中没有任何东西说NoSuchMethodError不能被抛出,而不是Main method not found。但是,与"汇编后的班级更改"案例,尤其是对于初学者,NoSuchMethodError可能太隐秘了,否则未能编写main方法(完全或以错误的签名编写(是一个更普遍的错误。在这种情况下,提供更具用户友好的消息没有害处。

最新更新