/*
* The implementation for finding classes from the bootstrap
* class loader, refer to java.h
*/static FindClassFromBootLoader_t *findBootClass =NULL;
jclass
FindBootStrapClass(JNIEnv *env,constchar* classname){if(findBootClass ==NULL){
findBootClass =(FindClassFromBootLoader_t *)dlsym(RTLD_DEFAULT,"JVM_FindClassFromBootLoader");if(findBootClass ==NULL){//"Error: loading: %s"JLI_ReportErrorMessage(DLL_ERROR4,"JVM_FindClassFromBootLoader");returnNULL;}}returnfindBootClass(env, classname);}
src/windows/bin/java_md.c::FindBootStrapClass
/*
* The implementation for finding classes from the bootstrap
* class loader, refer to java.h
*/static FindClassFromBootLoader_t *findBootClass =NULL;
jclass FindBootStrapClass(JNIEnv *env,constchar*classname){
HMODULE hJvm;//如果findBootClass为null重新加载jvm.dllif(findBootClass ==NULL){
hJvm =GetModuleHandle(JVM_DLL);if(hJvm ==NULL)returnNULL;/* need to use the demangled entry point */
findBootClass =(FindClassFromBootLoader_t *)GetProcAddress(hJvm,"JVM_FindClassFromBootLoader");if(findBootClass ==NULL){//"Error: loading: %s"JLI_ReportErrorMessage(DLL_ERROR4,"JVM_FindClassFromBootLoader");returnNULL;}}returnfindBootClass(env, classname);}