English 中文(简体)
通过JNI从C调用Java方法时出现异常NOSUCHMETHODERROR
原标题:Exception NOSUCHMETHODERROR when calling Java method from C through JNI

我在与JNI共享Java和C之间的流时遇到了问题。我试图从C调用一个Java方法,但当我试图获取<code>GetObjectMethodID</code>时,我得到了<code>nosuchmethodfound</code〕异常。

C代码:

jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID aMethodID = (*env)->GetMethodID(env, cls, "callbackmethod", "(I)V");
if (aMethodID == 0) { 
    log("Unable to get methodID"); //Always getting aMethodID as 0
}
int myvar = 7;
(*env)->CallVoidMethod(env, obj, aMethodID, myvar);

Java代码:

public class myclass extends activity {
    private void callbackmethod(int i) {
        Log.d("Tag", "In Java code");
    }

    -------
    more code
}

现在我总是收到一个错误<code>Ljava/lang/NoSuchMethodError;:回调方法。

一切看起来都很好,但我的代码不起作用。问题出在哪里?

最佳回答

这是我的错误。我从java静态函数调用本机函数。我去掉了静态关键字。它现在工作得很好。

问题回答

JNI方法是静态的吗?如果是这样,它的第二个参数是类,而不是当前对象的this指针。

此外,有问题的方法是在当前类中还是在其基中?根据您用小写字母拼写activity的事实判断,这不是实际代码的复制/粘贴,而是重写。在实际代码中更容易发现错误。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签