我们可以在没有main方法的情况下执行程序吗?在java中如何告诉我任何示例。你做过那样的例子。
答案 0 :(得分:9)
是的,有可能:
public class MyClass {
static {
Runnable r = new Runnable() {
public void run() {
// whatever you like
}
};
Thread t = new Thread(r)
t.start();
t.join();
}
}
现在你运行java将这个类传递给命令。 Java在尝试运行它的main(不存在)之前加载该类,但是在加载类时,它会触发静态块,该块将停止直到线程结束。
如果线程在没有退出的情况下完成,java会抱怨没有主要的方法,但到那时线程可以在任何时间内运行任何东西。
你必须在那里捕捉到一些例外,但它会起作用。
答案 1 :(得分:1)
public class TestWithoutMain {
// static block executes first
static{
System.out.println("Program without main");
System.exit(0);
}
}
注意:这在JDK1.7旧版本(build 1.7.0-ea-b19)中运行良好
来自jdk 1.7(build1.7.0-ea-b85),它给出了运行时异常
答案 2 :(得分:0)
是的,顺序如下:
因此,如果静态块中存在代码,则会执行该代码。但这样做没有意义。
如何测试:
public final class Test {
static {
System.out.println("FOO");
}
}
然后,如果您尝试运行该类(使用java Test或使用IDE的表单命令行),结果是:
错误就是这个。
FOO
java.lang.NoSuchMethodError: main
和ans是没有主要方法你不能执行程序但事情是你可以使用它,无论哪种方式意味着部分。
以及如何通过使用这样的静态块来实现。
static{
System.out.println("Program without main executing into the environment.");
System.exit(0);
}
答案 3 :(得分:0)
在Java 9及更高版本中,您可以使用JShell来执行Java代码,而无需使用主要方法。不适用于独立的应用程序,但是非常适合快速测试代码和原型更改。
答案 4 :(得分:-1)
除非它是Web应用程序,否则我认为对于任何可自行执行的独立应用程序都不可能,Runtime应该知道入口点,运行时设计这样一种方法,即main方法是一个入口点。