我们可以在没有main()方法的情况下执行java程序吗?

15 java

根据我的知识,我们无法在没有main方法的情况下执行,因为在运行java程序时.java虚拟机寻找主要方法.如果JVM找不到它会显示运行时错误的主方法错误在主线程中无法找到主类.

但我搜索了很多博客,其中一些人说,是的,如果在java程序中有静态块,可以通过静态博客完成,类加载器在java调用main()方法之前加载所有静态块!

它真的有可能,这些可用性是什么.

Boz*_*zho 27

现在不


在Java 7之前:

是的,顺序如下:

  • jvm加载类
  • 执行静态块
  • 寻找主要方法并调用它

所以,如果静态块中有代码,它将被执行.但这样做没有意义.

如何测试:

public final class Test {
    static {
        System.out.println("FOO");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,如果您尝试运行该类(使用java TestIDE或使用IDE 形成命令行),结果为:

FOO
java.lang.NoSuchMethodError:main


小智 5

是的,您可以使用静态块在没有 main 方法的情况下编译和执行。但是在执行(打印)静态块之后,您将收到一条错误消息,指出找不到主方法。

最新信息 --> 您无法使用 JAVA 7 版本执行此操作。IT 不会执行。

{
    static
    {
        System.out.println("Hello World!");
        System.exit(0); // prevents “main method not found” error
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不会在 JAVA 7 版本上执行。