如何在没有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运行。

从我记得的小苹果不需要一个主要的方法,但我不知道他们在技术上是一个程序。