在thread.cpp
中,定义了Threads::create_vm
方法,用于初始化主线程和 VM线程。虽然我找到了这个代码位置,但我想知道主线程如何知道要执行哪个Java main()
方法,即要查找哪个类,但我找不到那个。
创建VM之后(甚至之前),我想尽快获取包含main方法的类的类名(及其包)(作为第一步,只需{{1}它)。我考虑过查看主线程的堆栈帧中最底部的条目,但在printf
期间堆栈帧还不存在。有人能帮助我指出正确的方向吗?
tl; dr:我想修改OpenJDK源来打印包含Java Threads::create_vm
方法的类的类名,该怎么做?
答案 0 :(得分:1)
创建VM时,它不知道将在其中执行哪个类/方法。使用launcher之一调用主Java方法是JNI functions的工作。顺便说一句,这种方法不一定需要被称为main
。
我想修改OpenJDK源来打印的类名 包含Java main()方法的类,该怎么做?
您可能想要修改Java启动器。请参阅java.c。