You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 18.0.2无main方法使用静态块正常运行的原因咨询

为什么Java 18中不含main方法仅用静态块的代码能正常编译运行?

编译阶段

Java编译器仅校验代码语法合法性,不强制要求类必须包含main方法。只要代码本身没有语法错误,就能顺利通过编译,这是你的代码能编译成功的核心原因。

运行阶段

JVM启动后会先加载指定的目标类,类加载过程中会自动执行类中的静态初始化块(static块)。你的代码里的静态块不仅完成了打印逻辑,最后还调用了System.exit(0)——这个方法会直接终止当前JVM进程。

正常情况下,如果类中没有定义main方法,JVM在完成类加载和静态块执行后,会抛出NoSuchMethodError: main异常。但由于你的静态块提前调用了System.exit(0),JVM还没来得及抛出这个异常就已经正常退出了,所以你看不到报错,只会看到静态块里的输出内容。

你的代码示例:

class StaticBlockPrint{

    static {

        System.out.println("Hello world!");
        int i = 8;
        i =i+8;
 
        System.out.println(i);
        System.exit(0);
    }
}

内容的提问来源于stack exchange,提问作者Mahipal bisht

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:30:58