Странно это,
Кажется, что мой код на Java и C работает нормально. Однако, когда все сделано в коде C, и программа продолжит выполнение остальной части реализации Java, выдается следующее исключение.
Если меня заставят, я просто переверну вызов нативного кода в try / catch, но меня беспокоит, что выдается исключение по неизвестной мне причине? Кто-нибудь видел это раньше?
JavaCInterface.java (Extends Thread)
static {
Log.v(JavaCInterface.class.toString(), "Loading native libraries");
System.loadLibrary("JavaCInterface");
}
public native void cFunction();
@Override
public void run() {
super.run();
cFunction(); // Exception thrown when control is returned here
return;
}
JavaCInterface.cpp
:
JNIEXPORT void JNICALL Java_com_test_jni_JavaCInterface_cFunction(JNIEnv * env, jobject thiz)
{
... // Stuff happens here
logVerbose("Leaving Native Code"); // This gets logged fine and is the last line of the native method
}
Странно нет? Есть мысли?
ERROR/AndroidRuntime(2379): java.lang.IncompatibleClassChangeError: invoking method from interface not implemented by class
ERROR/AndroidRuntime(2379): at com.test.jni.JavaCInterface.cFunction(Native Method)