可能重复:
Printing message on Console without using main() method
有人可以建议JAVA程序如何在没有编写主要方法的情况下运行。
例如:
System.out.println("Main not required to print this");
如何使用中的 public static void main(String arg [])在没有的控制台上打印上述行。
答案 0 :(得分:38)
直到并包括 Java 6 ,可以使用问题Static Initialization Block中指出的Printing message on Console without using main() method来执行此操作。例如,使用以下代码:
public class Foo {
static {
System.out.println("Message");
System.exit(0);
}
}
System.exit(0)
允许程序在JVM查找main
方法之前退出,否则将引发以下错误:
线程“main”中的异常java.lang.NoSuchMethodError:main
然而,在 Java 7 中,这不再起作用,即使它已编译,当您尝试执行时会出现以下error:
程序编译成功,但未找到主类。 主类应该包含方法:public static void main(String [] args)。
这里的另一种方法是编写自己的启动器,这样就可以根据需要定义入口点。
在文章JVM Launcher中,您将找到入门所需的信息:
本文解释了如何创建Java虚拟机 启动器(如java.exe或javaw.exe)。它探讨了Java的方式 虚拟机启动Java应用程序。它为您提供了更多的想法 在您正在使用的JDK或JRE上。这个发射器非常有用 带有Java Native Interface的Cygwin(Linux模拟器)。本文 假设对JNI有基本的了解。
答案 1 :(得分:27)
在JDK6之前,您可以使用static initializer block来打印邮件。这样,只要加载了类,就会打印出消息。然后诀窍就是使用另一个程序来加载你的课程。
public class Hello {
static {
System.out.println("Hello, World!");
}
}
当然,您可以将程序作为java Hello
运行,您将看到该消息;但是,该命令也将失败并显示一条消息:
如其他人所说,线程“main”中的异常java.lang.NoSuchMethodError:main
[编辑] ,您可以在打印邮件后立即调用System.exit(0)
来避免NoSuchmethodError。
从JDK6开始,您不再看到来自static
初始化程序块的消息; details here
答案 2 :(得分:14)
public class X { static {
System.out.println("Main not required to print this");
System.exit(0);
}}
使用java X
从cmdline运行。
答案 3 :(得分:3)
Applets不需要主方法,但我不确定它们在技术上是不是一个程序。