所有java程序都以main开头吗?

时间:2013-02-14 03:05:29

标签: java

  1. Web服务器,例如:Apache Tomcat。
  2. App服务器,例如:Weblogic。
  3. EJB容器。
  4. Android java容器。 5个所有其他java实现?

6 个答案:

答案 0 :(得分:1)

通常是的。 但不,这不是必需的......正如这个答案雄辩地指出的那样...... https://stackoverflow.com/a/2897323/1481262

此外,在检测应用程序代码(使用java.lang.instrument包)时,执行在premain执行之前以main方法开始。 - [1] [2]。

[1] http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html
[2] http://dhruba.name/2010/02/07/creation-dynamic-loading-and-instrumentation-with-javaagents/

答案 1 :(得分:0)

是。当你启动一个java程序时,你指定要使用的类,并使用命令行参数调用它的静态main方法。

答案 2 :(得分:0)

是的,所有java程序都以main开头,尽管每个类都没有必要拥有它的主要功能。

答案 3 :(得分:0)

是的,所有程序都应以main开头,这类似于JDK和JRE之间的合同。

答案 4 :(得分:0)

JRE always starts from a main() method。但是,可以启动JRE并使用它来运行多个独立的程序。例如,浏览器通常会运行其所有小程序in the same JRE

答案 5 :(得分:0)

理论上,你可以编写一个自定义启动器而不是java.exe,就像这里http://www.codeproject.com/Articles/17352/JVM-Launcher一样。看看他们如何调用main

//Find the class
jclass    jcJclass = psJNIEnv->FindClass(mainClassName);

//Find the main method id
jmethodID jmMainMethod = 
    psJNIEnv-> GetStaticMethodID(jcJclass, "main", "([Ljava/lang/String;)V");

//Call the main method.
psJNIEnv->CallStaticVoidMethod(jcJclass, jmMainMethod, joApplicationArgs);

也就是说,它可以是任何方法