可以在jni的實現文件中,添加JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved);實現jvm的獲取,此函數會在java加載native 庫時調用。
也可以在native的實現函數中獲取jvm變量。
代碼:
聲明全局變量: JavaVM* jvm;
jint retint = env->GetJavaVM(&jvm);
獲取jvm並存儲的目的是:實現c到java的反調,而不是回調。
在反調中應該是這樣的:
JNIEnv * env;
jint envret = jvm->AttachCurrentThread((void**)&env,NULL);
....
jvm->DetachCurrentThread();