JNI上的Java对象

时间:2011-07-04 17:22:41

标签: java class java-native-interface

我的问题很简单,如何在C ++上实例化Java对象(虽然是JNI)并返回这些创建对象的数组?

类似的东西:

jclass cls = g_jniEnv->FindClass("Lbr/com/iba/model/Annotation;");      
jmethodID meth = g_jniEnv->GetMethodID(cls, "setBookmark1", "(Ljava/lang/String;)V");

我如何实例化这个cls对象并调用方法然后从这个方法返回它?

1 个答案:

答案 0 :(得分:4)

实际上,我解决了它:

JNIEXPORT jobject JNICALL Java_com_rmsdk_wrapper_RMServices_getBookmarkNew(
    JNIEnv *env, jobject thiso) {
   jclass cls = g_jniEnv->FindClass("br/com/iba/model/Annotation");

   jobject obj = g_jniEnv->AllocObject(cls);

   jmethodID meth1 = g_jniEnv->GetMethodID(cls, "setBookmark1", "(Ljava/lang/String;)V");
   jmethodID meth2 = g_jniEnv->GetMethodID(cls, "setPage", "(I)V");

   jstring jAssetName = g_jniEnv->NewStringUTF("Bookmark qualquer");

   g_jniEnv->CallObjectMethod(obj, meth1, jAssetName);
   g_jniEnv->CallObjectMethod(obj, meth2, 2);

   return obj;
};