我只是想知道我们的主要方法在哪里被调用。 在eclipse中,我们将它作为应用程序运行时会自动调用。但是,如果我写有相同签名的另一种方法,但不同的名称,它不会被调用从哪里调用public static void main?
回答
从Java Virtual Machine
的文档:
说明
java工具启动Java应用程序。它通过启动一个 Java运行时环境,加载指定的类并调用该类的主要方法来实现。该方法声明必须看起来像 如下:
公共静态无效的主要
的方法必须声明 公共和静态的,它必须不返回任何值(字符串ARGS []),它必须接受一个 字符串数组作为参数。默认情况下,第一个非选项参数 是要调用的类的名称。应使用完全合格的类名 。如果指定了-jar选项,则第一个非选项 参数是包含应用程序的类和资源 文件的JAR归档文件的名称,其中启动类由 主类清单头指示。
Java运行时在三组位置中搜索启动类和其他类 :引导程序类路径, 安装的扩展和用户类路径。
将类名或JAR文件名后面的非选项参数传递给主函数 。
javaw命令与java完全相同,只是使用javaw 没有关联的控制台窗口。当您不想要 命令提示符窗口出现时使用javaw。但是,如果某个 原因导致启动失败,javaw启动器将显示一个对话框,其中包含错误信息。
它由JVM自动调用,如由JVMS(§5.2Java虚拟机启动。)指定:
Java虚拟机通过创建一个初始类,它被指定启动以实现相关的方式,使用引导类加载器(第5.3.1节)。 Java虚拟机然后链接初始类,初始化它,并调用公共类方法
void main(String[])
。
因此,main()
是特殊的。具有相同签名但名称不同的另一种方法不会自动由JVM调用。
它应该是JVMS。 – johnchen902
@ johnchen902:的确,谢谢。 – NPE
主要方法“Java虚拟机通过调用一些指定类的方法主要,并向它传递一个参数,它是一个字符串数组开始执行”该计划的入口点。当程序启动时,它由JVM调用一次。
对的* .jar档案,你在manifest
提供Main-Class: classname
设置主类(即类,其main()
被调用)。在命令行调用中,您只需要执行java Main_class_name
。你可以在你选择的IDE设置这些(在IntelliJ IDEA的是,例如,Main类在进入“编辑配置”在运行菜单。在Eclipse或NetBeans的,我想,类似的东西。
当你执行一个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调用的主要方法
- 1. public static void main in java
- 2. 我应该在哪里放置public static void Main?
- 3. public static void main(String [] args)和public static void main(String args [])之间的区别?
- 4. Java小应用程序不再调用public static void main()
- 5. 我们可以使用public static void main(String [] [] args)吗?
- 6. 使用int而不是字符串:public static void main(int [] args)
- 7. c#中static void main(string [] args)和static void main()之间的区别?
- 8. public static void <callbackMethodName>(IAsyncResult)
- 9. 为什么要在public static void main(String [] args)上抛出异常?
- 10. 如何查找“public static void main”或程序的开始?
- 11. `public static <T> void main(String [] args)`代表什么?
- 12. 我还是不明白public static void main(string [] args)
- 13. 错误:请定义主要方法为:public static void main(String [] args)
- 14. java中的public static void main(String arg [])是否被修复?
- 15. 试图在程序中新建一个ContextFactory> public static void Main
- 16. 为什么我无法从public static void main更改JLabel中的文本?
- 17. C#public void static Main(String [] args){}和public int main(String [] args)两个重载的方法一起工作吗?
- 18. 在Servlet中使用的Websocket,是“public static void main(final String [] args)”需要吗?
- 19. 为什么我们通常使用public static void main('String [] args')启动程序?
- 20. 如何调用public void protected void
- 21. C#static void Main不应该公开吗?
- 22. public static void main(String [] args) - 为什么它实际上是静态的?
- 23. 编写一个没有“public static void main”的JMS发布服务器
- 24. 为什么启动一个RFT脚本不需要“public static void main”?
- 25. 我应该在这个程序中放置“public static void main(String [] args)”?
- 26. public void onSuccess(String result),从哪里/如何设置结果?
- 27. call static void
- 28. 如何从Main调用void函数
- 29. public vs public static方法
- 30. public static final Lambda?
很可能从什么地方本土调用:参见[这](http://docs.oracle。 COM/JavaSE的/ 7 /文档/技术说明/指南/ JNI /规格/ invocation.html)。 – johnchen902