📜  在类中找不到 main(String[]) 方法 - Java (1)

📅  最后修改于: 2023-12-03 15:08:04.492000             🧑  作者: Mango

在类中找不到 main(String[]) 方法 - Java

当使用 java 命令运行一个 Java 程序时,JVM 会从指定的主类开始执行程序。而指定的主类必须包含 public static void main(String[] args) 方法。

如果在运行程序时,JVM 抛出 java.lang.NoSuchMethodError: main 或者 Error: Main method not found in class 异常,那么就意味着在指定的主类中找不到 main(String[]) 方法。

为什么会找不到 main 方法?

造成这种情况的原因通常有以下几种:

  1. 主类中没有声明 main(String[]) 方法。
  2. main(String[]) 方法的访问修饰符不是 public
  3. main(String[]) 方法的方法名错误。必须是 main,且括号内必须是一个 String 数组类型。
  4. main(String[]) 方法的参数列表不正确。
  5. 编译时指定的主类与运行时使用的主类不一致。
  6. 所在的 jar 包中可能没有指定的主类。
如何解决这种异常?

当 JVM 抛出 java.lang.NoSuchMethodError: main 或者 Error: Main method not found in class 异常时,可以按照以下方式解决:

  1. 确认主类中已经声明了 main(String[]) 方法,并且其访问修饰符是 public
  2. 确认 main(String[]) 方法的方法名、参数列表等是正确的。
  3. 确认编译时指定的主类与运行时使用的主类是一致的。
  4. 确认所在的 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 包中有指定的主类。