C通过JNI调用java中的静态方法。

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();

猜你喜欢

转载自blog.csdn.net/mashaoshuai12/article/details/88393123
今日推荐