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