Java:
public class StaticFieldAccess
{
private static int si;
private native void accessField();
public static void main(String args[])
{
StaticFieldAccess c = new StaticFieldAccess();
StaticFieldAccess.si = 100;
c.accessField();
System.out.println("In Java:");
System.out.println(" StaticFieldAccess.si = " + si);
}
static
{
System.loadLibrary("StaticFieldAccess");
}
}
C++:
#include "StaticFieldAccess.h"
#include <cstdio>
JNIEXPORT void JNICALL Java_StaticFieldAccess_accessField
(JNIEnv *env, jobject jobj)
{
jfieldID fid; /* store the field ID */
jint si;
/* Get a reference to obj’s class */
jclass cls = env->GetObjectClass(jobj);
printf("In C++:\n");
/* Look for the static field si in cls */
fid = env->GetStaticFieldID(cls, "si", "I"