2013-06-29 48 views
4

我只是想知道我们的主要方法在哪里被调用。 在eclipse中,我们将它作为应用程序运行时会自动调用。但是,如果我写有相同签名的另一种方法,但不同的名称,它不会被调用从哪里调用public static void main?

+0

很可能从什么地方本土调用:参见[这](http://docs.oracle。 COM/JavaSE的/ 7 /文档/技术说明/指南/ JNI /规格/ invocation.html)。 – johnchen902

回答

6

Java Virtual Machine的文档:

说明

java工具启动Java应用程序。它通过启动一个 Java运行时环境,加载指定的类并调用该类的主要方法来实现。该方法声明必须看起来像 如下:

公共静态无效的主要

的方法必须声明 公共和静态的,它必须不返回任何值(字符串ARGS []),它必须接受一个 字符串数组作为参数。默认情况下,第一个非选项参数 是要调用的类的名称。应使用完全合格的类名 。如果指定了-jar选项,则第一个非选项 参数是包含应用程序的类和资源 文件的JAR归档文件的名称,其中启动类由 主类清单头指示。

Java运行时在三组位置中搜索启动类和其他类 :引导程序类路径, 安装的扩展和用户类路径。

将类名或JAR文件名后面的非选项参数传递给主函数 。

javaw命令与java完全相同,只是使用javaw 没有关联的控制台窗口。当您不想要 命令提示符窗口出现时使用javaw。但是,如果某个 原因导致启动失败,javaw启动器将显示一个对话框,其中包含错误信息。

1

它由JVM自动调用,如由JVMS(§5.2Java虚拟机启动。)指定:

Java虚拟机通过创建一个初始类,它被指定启动以实现相关的方式,使用引导类加载器(第5.3.1节)。 Java虚拟机然后链接初始类,初始化它,并调用公共类方法void main(String[])

因此,main()是特殊的。具有相同签名但名称不同的另一种方法不会自动由JVM调用。

+0

它应该是JVMS。 – johnchen902

+0

@ johnchen902:的确,谢谢。 – NPE

0

主要方法“Java虚拟机通过调用一些指定类的方法主要,并向它传递一个参数,它是一个字符串数组开始执行”该计划的入口点。当程序启动时,它由JVM调用一次。

0

对的* .jar档案,你在manifest提供Main-Class: classname设置主类(即类,其main()被调用)。在命令行调用中,您只需要执行java Main_class_name。你可以在你选择的IDE设置这些(在IntelliJ IDEA的是,例如,Main类进入“编辑配置”运行菜单。在Eclipse或NetBeans的,我想,类似的东西。

0

当你执行一个Java类 第1步:类文件被加载到JVM

第2步:JVM读取字节码

第3步:JVM搜索的全部关键词

步骤4:JVM搜索静止象素块

步骤5:异步块

步骤6 JVM的搜索:JVM创建具有键为优先

步骤7的哈希映射:根据优先级JVM执行从顶部静止象素块到底部,从顶部asysnchronous块底部

步骤8:此JVM后搜索与申报

public static void main (String args[]) 
该方法

并执行它

所以回答你的问题,当执行一类JVM调用的主要方法

相关问题