【发布时间】:2011-11-06 11:53:16
【问题描述】:
例如,假设在 Android 中,我需要调用静态方法 android.os.SystemClock.elapsedRealtime(),它会从部分原生代码中返回一个 long。在mylib.c 文件中,我有
JNIEXPORT jlong JNICALL
Java_com_mpackage_MyClass_nativeMethod(JNIEnv *env, jobject obj){
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID mid = (*env)->GetStaticMethodID(env, cls, "android.os.SystemClock.elapsedRealtime", "(V)J");
if (mid == 0)
return 0L;
return CallStaticLongMethod(cls, mid);
}
在 java MyClass.class 中,我有其他的
static {System.loadLibrary("myLib");}
native long nativeMethod();
但是当我调用它时,我收到以下错误:
ERROR/AndroidRuntime(628): java.lang.NoSuchMethodError:
android.os.SystemClock.elapsedRealtime()
在mid 行的声明处。我认为这很简单,但我是 jni 的新手。
谁能指出我的错误?
【问题讨论】:
标签: java android static java-native-interface android-ndk