#基本流程非静态方法得到字节码 (FindClass) 得到方法(GetMethodID) 实例化该类(AllocObject) 调用方法(CallIntMethod)静态方法得到字节码 (FindClass) 得到方法(GetStaticMethodID) 调用方法(CallStaticVoidMethod) 调用的静态方法#非静态方法##C代码调JAVA类中的addInt(int a, int
转载 2024-08-20 22:34:39
33阅读
JAVA从启动到第一个函数执行的发生的流程:WinMain->JLI_Launch->JVMInit->NewThread->JavaMain->initializateJVM->CreatJavaVM->LoadMainClass->GetStaticMethodID看一个程序首先要找它的启动入口OpenJDK的如下目录有着main程序的启动入口:
转载 2023-09-22 12:58:36
60阅读
调用Java主类的main()方法其中浅红色的函数由主线程执行,而另外的浅绿色部分由另外一个线程执行,浅绿色的线程最终也会负责执行Java主类中的main()方法。在JavaMain()函数中调用LoadMainClass()函数加载Java主类。接着在JavaMain()函数中有如下调用:mainID = (*env)->GetStaticMethodID( env, mainCla
原创 2月前
62阅读
在JNI中,当我们使用GetFieldID/GetStaticFieldID或GetMethodID/GetStaticMethodID及定义JNINativeMethod等时,我们需要表示成员变量的类型,或函数传入参数或返回的类型。JNI把Field的类型,或函数传入参数或返回值的类型进行简写以char*的形式进行表示。 对于成员变量,直接用java类型的简写表示成员变量的类型就可以 比如:"I"表示该成员变量是Int类型 "Ljava/lang/String;"表示该成员变量是String类型 示例1: jfieldID str = (env)-&g
转载 2012-03-26 21:02:00
324阅读
2评论