1,编写需要调用的静态方法。
// 产生UUId方法 public static String getUUId(){ return UUID.randomUUID().toString(); }
2,编写调用接口。
// C调用java中的静态方法 public native void accessStaticMethod();
3,头文件。
JNIEXPORT void JNICALL Java_com_XXX_XXX_XXX_accessStaticMethod(JNIEnv *, jobject);
4,实现方法。
// 访问java的静态方法方法 extern "C" JNIEXPORT void JNICALL Java_com_shaoshuaima_test_JniForC_accessStaticMethod(JNIEnv * env, jobject jobj){ //jclass jclass cls = env->GetObjectClass(jobj); // jmethodID jmethodID mid = env->GetStaticMethodID(cls,"getUUId","()Ljava/lang/String;"); // 调用 // CallStatic<Type>Method jstring uuid =(jstring)(env->CallStaticObjectMethod(cls,mid)); // 随机文件名称 uuid.txt // jstring->char * // isCopy JNI_FALSE 代表Java和C操作的是同一个字符串 const char * uuid_str = env->GetStringUTFChars(uuid,JNI_FALSE); // 拼接 char * filename; sprintf(filename,"/Users/XXX/%s.txt",uuid_str); FILE *fp = fopen(filename,"w"); fputs("i love you",fp); fclose(fp); }
5,调用方法。
XXX.accessStaticMethod();