小编sim*_*mpx的帖子

JNI GetLongField失败,"jni对类java.lang.Class的对象无效"

java代码:

public class Foo {
    private long i = 0;
    void printI() {
        nativePrintI();
    }      
    private native static void nativePrintI();
}
Run Code Online (Sandbox Code Playgroud)

JNI代码:

JNIEXPORT void JNICALL Java_com_aliyun_livestream_Publisher_nativeRelease
    (JNIEnv *env, jobject obj) {
    jclass cls = env->GetObjectClass(obj);;
    jfieldID iField = env->GetFieldID(cls, "i", "J");
    jlong i = env->GetLongField(obj, iField);
    printf("%lld\n", i);
}
Run Code Online (Sandbox Code Playgroud)

我的被​​叫者是这样的:

Foo foo = new Foo();
foo.printI();
Run Code Online (Sandbox Code Playgroud)

有时它工作正常,但有时它失败了消息""jni对类java.lang.Class的对象无效"

java java-native-interface android android-ndk

0
推荐指数
1
解决办法
1530
查看次数