java中无主函数的打印

java中无主函数的打印,java,Java,我的朋友一直问我这个问题 在java中编写程序以打印“Hello,World”,而不使用main()函数 所以我的问题是: 在没有main()的情况下编写和编译程序真的有可能吗?您可以在服务器上运行java web project(例如Tomcat)。 该项目可以使用servlet打印“Hello World”您可以在服务器上运行java web项目(例如Tomcat)。 该项目可以使用servlet打印“Hello World”简短的回答是:不 Mat展示了一个很好的例子,说明了如何做一些接近

我的朋友一直问我这个问题

在java中编写程序以打印“Hello,World”,而不使用main()函数

所以我的问题是:


在没有main()的情况下编写和编译程序真的有可能吗?您可以在服务器上运行java web project(例如Tomcat)。
该项目可以使用servlet打印“Hello World”

您可以在服务器上运行java web项目(例如Tomcat)。
该项目可以使用servlet打印“Hello World”

简短的回答是:不

Mat展示了一个很好的例子,说明了如何做一些接近它的事情,但你会得到一个例外


每个java程序都需要一个main方法,即使它可能以某种方式隐藏。例如,当您编写一个Servlet时,您没有编写main方法,但它仍然存在于Servlet容器的代码中。

简短的回答是:否

public class Test {
    static {
        System.out.println("Hello,World");
        System.exit(0);
    }
}
Mat展示了一个很好的例子,说明了如何做一些接近它的事情,但你会得到一个例外

每个java程序都需要一个main方法,即使它可能以某种方式隐藏。例如,当您编写一个Servlet时,您不会编写main方法,但它仍然存在于Servlet容器的代码中

public class Test {
    static {
        System.out.println("Hello,World");
        System.exit(0);
    }
}
将使用1.7版本之前的Java虚拟机打印《你好,世界》。OracleJDK1.7在初始化类之前检查
main

似乎表明JVM将尝试运行
main
方法,但只有在初始化程序运行之后。这在Java1.7中的解释似乎有所不同

特别感谢您提供了
系统。退出(0)

将使用1.7版本之前的Java虚拟机打印《你好,世界》。OracleJDK1.7在初始化类之前检查
main

似乎表明JVM将尝试运行
main
方法,但只有在初始化程序运行之后。这在Java1.7中的解释似乎有所不同


特别感谢您的
系统。退出(0)
行。

不,您当然可以在没有main()的情况下编写和编译程序,但您无法运行它。
运行程序main是必须的。

不,当然可以在没有main()的情况下编写和编译程序,但不能运行它。 运行主程序是必须的。

这是如何做到的

public class WithoutMain {

    static {
        System.err.println("Hello World");
        System.exit(0);
    }
}
当运行JVM时,JVM将从创建类开始,这样做时,类将首先打印Hello World,然后退出JVM(使用System.exit(0);),这样JVM将永远不会看到缺少主方法。

这是如何做到的

public class WithoutMain {

    static {
        System.err.println("Hello World");
        System.exit(0);
    }
}


运行JVM时,将从创建类开始,执行此操作时,类将首先打印Hello World,然后退出JVM(使用System.exit(0);)因此JVM永远不会看到主方法丢失。

您可以无异常地打印吗?您可以通过添加对
System.exit(0)的调用来避免异常
println
之后。这将不起作用,因为您需要main()类来启动JVM。JVM首先加载该类,然后查找其main方法,并引发异常。但是在加载类时,静态块是executed@OpDeCirkel:尝试一下,并查看指向我发布的JLS的链接。是否可以毫无例外地打印?您可以通过添加对
系统的调用来避免异常。退出(0)
println
之后。这将不起作用,因为您需要main()类来启动JVM。JVM首先加载该类,然后查找其main方法,并引发异常。但是在加载类时,静态块是executed@OpDeCirkel:试试看,看看我发布的JLS的链接。它是如何无关的?部署servlet时,它将打印HelloWorld,而不使用main方法。容器itslef当然有主要的方法,但是你的反应有点奇怪抱歉,我不知道,我只是在正常编程中思考,我的错误它怎么没有关系?部署servlet时,它将打印HelloWorld,而不使用main方法。容器itslef当然有主要的方法,但是你的反应有点奇怪抱歉,我不知道,我只是在正常编程中思考,我的错误我必须问为什么这将证明什么呢?除了你可以用艰难的、非传统的方式做事情——这是毫无意义的?我想知道更多的方式和概念是对的,但我仍然有一个奇怪的问题。有很多其他的方法来证明这些事情是有意义的,是有用的等等!无论如何,有趣的问题是…我必须问为什么这将证明什么呢?除了你可以用艰难的、非传统的方式做事情——这是毫无意义的?我想知道更多的方式和概念是对的,但我仍然有一个奇怪的问题。有很多其他的方法来证明这些事情是有意义的,是有用的等等!无论如何,有趣的问题是。。。