微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JNI |从本机代码返回的异常| IncompatibleClassChangeError:未通过类实现的接口调用方法

如何解决JNI |从本机代码返回的异常| IncompatibleClassChangeError:未通过类实现的接口调用方法

|| 这很奇怪 我的Java和C代码似乎都可以正常工作。但是,当所有事情都在C代码中完成并且该程序将继续进行其余的Java实现时,将引发以下Exception。 如果被迫,我会简单地将对本机代码调用包装在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)
    

解决方法

        此错误实际上是由\“ GetMethodID \”导致的,该错误先前未在代码中未经检查。不得不像ViTo所说的那样通过逐点编码来追踪     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。