我有这个类
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
方法(完全或以错误的签名编写(是一个更普遍的错误。在这种情况下,提供更具用户友好的消息没有害处。