class WithoutMain {
static
{
System.out.println("Without main class!!!");
System.exit(0);
}
}
当我试图在大于7的java版本中运行上面的代码时,我得到了以下错误。 该程序编译成功,但没有找到主类。主类应该包含方法:public static void main(String [] args)。
有人可以指导我为什么Java不支持在java7之后没有main运行程序
答案 0 :(得分:8)
AFAIK此更改特定于Java 7.在Java 8中,您可以执行此操作。您无法在Java 7中执行此操作,因为它会在不首先加载失败的类的情况下查找该方法。无论如何,它已经在Java 8中被改回。
public class Main {
static {
System.out.println("Without main class!!! with " + System.getProperty("java.version"));
System.exit(0);
}
}
打印
Without main class!!! with 1.8.0_66
注意:这会杀死整个程序。如果您希望程序在没有主程序的情况下继续运行,则可以执行此操作
public class Main {
static {
// do something which starts threads
System.out.println("Without main class!!! with " + System.getProperty("java.version"));
if (true)
throw new ThreadDeath();
}
}
这将阻止错误消息,但如果存在非守护程序线程,则保留后台线程运行。
答案 1 :(得分:1)
静态部分
static
{
System.out.println("Without main class!!!");
System.exit(0);
}
每次JVM在内存中加载类时都会执行,但是如果要启动java应用程序,则需要一个main方法,因为它是每个java应用程序的起点,如果你不定义它,然后JVM将不知道从哪里开始。
您可以扩展代码并执行以下操作:
class WithoutMain {
static
{
System.out.println("Static section!!");
}
public static void main(String[] args){
System.out.println("Main class!!!");
}
}
,输出首先是静态部分,然后是主方法中定义的代码。
答案 2 :(得分:0)
每次启动JVM并将类加载到类中时,都会使用类加载静态方法,但是没有任何内容可以调用它或在JVM内部输出其内容。作为每种语言(我知道),你需要一个处理器用于你的参数,如果是Java,它是main()
方法。