📅  最后修改于: 2023-12-03 15:08:04.492000             🧑  作者: Mango
当使用 java
命令运行一个 Java 程序时,JVM 会从指定的主类开始执行程序。而指定的主类必须包含 public static void main(String[] args)
方法。
如果在运行程序时,JVM 抛出 java.lang.NoSuchMethodError: main
或者 Error: Main method not found in class
异常,那么就意味着在指定的主类中找不到 main(String[])
方法。
造成这种情况的原因通常有以下几种:
main(String[])
方法。main(String[])
方法的访问修饰符不是 public
。main(String[])
方法的方法名错误。必须是 main
,且括号内必须是一个 String
数组类型。main(String[])
方法的参数列表不正确。jar
包中可能没有指定的主类。当 JVM 抛出 java.lang.NoSuchMethodError: main
或者 Error: Main method not found in class
异常时,可以按照以下方式解决:
main(String[])
方法,并且其访问修饰符是 public
。main(String[])
方法的方法名、参数列表等是正确的。jar
包中有指定的主类。下面的代码演示了一个错误的主类,当我们尝试运行这个程序时,会抛出 java.lang.NoSuchMethodError: main
异常。
public class MainClass {
public void doSomething() {
System.out.println("Hello World!");
}
}
为了解决这个异常,我们需要在 MainClass
中增加 main(String[])
方法:
public class MainClass {
public void doSomething() {
System.out.println("Hello World!");
}
public static void main(String[] args) {
MainClass mc = new MainClass();
mc.doSomething();
}
}
现在,我们再次运行程序,会输出 "Hello World!"。
指定的主类必须包含 public static void main(String[] args)
方法。如果在运行程序时,JVM 抛出 java.lang.NoSuchMethodError: main
或者 Error: Main method not found in class
异常,那么就意味着在指定的主类中找不到 main(String[])
方法。解决这种异常的方法是确认主类中已经声明了 main(String[])
方法,并且其访问修饰符是 public
、方法名、参数列表等是正确的,编译时指定的主类与运行时使用的主类是一致的,以及所在的 jar
包中有指定的主类。