从命令行运行Java应用程序时如何调用JNI_CreateJavaVM

时间:2015-05-07 06:33:29

标签: java jvm

我想了解进入 JVM 的要点。在做了我的研究之后,我了解到JNI_CreateJavaVM(至少在 HotSpot JVM 中)是调用它来启动JVM的方法。

我现在的问题是谁调用JNI_CreateJavaVM方法?我试着在JDK7 Hotspot查看JDK源代码。但它不是很清楚,我无法找到任何“int main”方法。

假设我创建了一个简单的java程序并将其编译为Hello.java。现在,当我从命令行运行“java Hello”时,究竟发生了什么?第一个叫做的方法是什么?

答案:@apangin绝对指出了我正确的方向(见下面的评论)。主要方法位于main method for java launcher。从那里它调用最终调用JNI_CreateJavaVM方法的JLI_launch。

1 个答案:

答案 0 :(得分:0)

java(java.exe)是启动程序 - 用C编写的小程序 The sources位于JDK存储库中,而不是HotSpot。

Java启动程序首先找到已安装的JRE,通过JNI_CreateJavaVM创建新虚拟机,使用JNI搜索main方法,最后使用JNI CallStaticVoidMethod函数调用此方法。 / p>