如何在没有main方法的情况下运行Java程序?

时间:2012-07-10 20:37:40

标签: java

  

可能重复:
  Printing message on Console without using main() method

有人可以建议JAVA程序如何在没有编写主要方法的情况下运行

例如:

System.out.println("Main not required to print this");

如何使用中的 public static void main(String arg [])没有的控制台上打印上述行。

4 个答案:

答案 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不需要主方法,但我不确定它们在技术上是不是一个程序。