Java Native Foundation

eussam

Membre enregistré
13 Août 2010
1
0
53
Bonjour à tous,

Je recherche des examples de code pour l'utilisation des JNF, le template fournis par apple dans XCode n'est pas assez complet, et impossible de trouver sur le net.

J'ai par exemple besoin d'utiliser la fonction JNFGetObjectField pour parcourir un jobjectarray.

Merci beaucoup d'avance pour votre aide
 
Pour faire du Java, il vaudrait mieux utiliser Eclipse ou NetBeans, Xcode n'a pas vraiment été prévu pour cela surtout depuis qu'Apple a laissé tomber Cocoa en Java.
 
JNF n'est qu'un wrapper de

http://java.sun.com/docs/books/jni/

Bloc de code:
JNIEXPORT void JNICALL 
 Java_InstanceFieldAccess_accessField(JNIEnv *env, jobject obj)
 {
     jfieldID fid;   /* store the field ID */
     jstring jstr;
     const char *str;
 
     /* Get a reference to obj's class */
     jclass cls = (*env)->GetObjectClass(env, obj);
 
     printf("In C:\n");
 
     /* Look for the instance field s in cls */
     fid = (*env)->GetFieldID(env, cls, "s",
                              "Ljava/lang/String;");
     if (fid == NULL) {
         return; /* failed to find the field */
     }
 
 
 
 
     /* Read the instance field s */
     jstr = (*env)->GetObjectField(env, obj, fid);
     str = (*env)->GetStringUTFChars(env, jstr, NULL);
     if (str == NULL) {
         return; /* out of memory */
     }
     printf("  c.s = \"%s\"\n", str);
     (*env)->ReleaseStringUTFChars(env, jstr, str);
 
     /* Create a new string and overwrite the instance field */
     jstr = (*env)->NewStringUTF(env, "123");
     if (jstr == NULL) {
         return; /* out of memory */
     }
     (*env)->SetObjectField(env, obj, fid, jstr);
 }

assez facile a reproduire

typedef struct _JNFMemberInfo {
   const char *name;
   const char *sig;
   BOOL isStatic;
   JNFClassInfo *classInfo;
   union _j {
      jfieldID fieldID;
      jmethodID methodID;
   } j;
} JNFMemberInfo;

typedef struct _JNFClassInfo {
   const char *name;
   jclass cls;
} JNFClassInfo;