4 static jmethodID findClassM;
5 static jmethodID findLoadedClassM;
6 static jobject classLoader;
8 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
13 jmethodID getClassLoader;
15 (*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_6);
17 testCl = (*env)->FindClass(env, "org/ocera/orte/JOrte");
18 clClass = (*env)->FindClass(env, "java/lang/Class");
19 clClassLoader = (*env)->FindClass(env, "java/lang/ClassLoader");
20 getClassLoader = (*env)->GetMethodID(env, clClass, "getClassLoader", "()Ljava/lang/ClassLoader;");
21 classLoader = (*env)->CallObjectMethod(env, testCl, getClassLoader);
22 classLoader = (*env)->NewGlobalRef(env, classLoader);
23 findClassM = (*env)->GetMethodID(env, clClassLoader, "findClass", "(Ljava/lang/String;)Ljava/lang/Class;");
24 findLoadedClassM = (*env)->GetMethodID(env, clClassLoader, "findLoadedClass", "(Ljava/lang/String;)Ljava/lang/Class;");
26 return JNI_VERSION_1_6;
29 JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) {
32 (*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_6);
34 (*env)->DeleteGlobalRef(env, classLoader);
37 jclass findClass(JNIEnv *env, const char* name) {
40 if ((cl = (*env)->CallObjectMethod(env, classLoader, findLoadedClassM, (*env)->NewStringUTF(env, name))) == NULL) {
41 cl = (*env)->CallObjectMethod(env, classLoader, findClassM, (*env)->NewStringUTF(env, name));