可能重复:
在控制台上打印消息而不使用 main() 方法
有人可以建议如何在不编写主要方法的情况下运行 JAVA 程序..
例如:
System.out.println("Main not required to print this");
如何在不使用类中的public static void main(String arg[])的情况下在控制台上打印上面的行。
可能重复:
在控制台上打印消息而不使用 main() 方法
有人可以建议如何在不编写主要方法的情况下运行 JAVA 程序..
例如:
System.out.println("Main not required to print this");
如何在不使用类中的public static void main(String arg[])的情况下在控制台上打印上面的行。
在 Java 6 之前(包括Java 6),可以使用静态初始化块来执行此操作,正如在控制台上打印消息而不使用 main() 方法的问题中指出的那样。例如使用以下代码:
public class Foo {
static {
System.out.println("Message");
System.exit(0);
}
}
让程序在System.exit(0)
JVM寻找main
方法之前退出,否则会抛出以下错误:
线程“main”中的异常 java.lang.NoSuchMethodError: main
但是,在Java 7中,这不再起作用,即使它可以编译,当您尝试执行它时也会出现以下错误:
程序编译成功,但是没有找到主类。主类应包含方法:public static void main (String[] args)。
这里另一种方法是编写自己的启动器,这样您就可以根据需要定义入口点。
在文章JVM Launcher中,您将找到入门所需的信息:
本文介绍了如何创建 Java 虚拟机启动器(如 java.exe 或 javaw.exe)。它探讨了 Java 虚拟机如何启动 Java 应用程序。它为您提供了有关您正在使用的 JDK 或 JRE 的更多想法。这个启动器在带有 Java Native Interface 的 Cygwin(Linux 模拟器)中非常有用。本文假设您对 JNI 有基本的了解。
在 JDK6 之前,您可以使用静态初始化程序块来打印消息。这样,一旦你的类被加载,消息就会被打印出来。然后诀窍就变成了使用另一个程序来加载你的类。
public class Hello {
static {
System.out.println("Hello, World!");
}
}
当然,你可以运行程序java Hello
,你会看到消息;但是,该命令也会失败并显示一条消息:
线程“main”中的异常 java.lang.NoSuchMethodError: main
[编辑]正如其他人所指出的,您可以通过System.exit(0)
在打印消息后立即调用来避免 NoSuchmethodError。
从 JDK6 开始,您不再看到来自static
初始化程序块的消息;详情在这里。
public class X { static {
System.out.println("Main not required to print this");
System.exit(0);
}}
从 cmdline 运行java X
.
我记得的小程序不需要 main 方法,尽管我不确定它们在技术上是否是一个程序。