Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数组从jni传递到java方法_Java_Android_Arrays_Callback_Java Native Interface - Fatal编程技术网

如何将数组从jni传递到java方法

如何将数组从jni传递到java方法,java,android,arrays,callback,java-native-interface,Java,Android,Arrays,Callback,Java Native Interface,我正在尝试将int数组从JNI传递到Java。当我传递单个或多个int值时,它起作用但传递数组不起作用。每次应用程序崩溃并返回以下错误 错误 JNI JAVA 线路 jobject javaObjectRef = env->NewObject(javaClassRef, javaMethodRef); 这绝对是错误的。它尝试使用onDataReady()的方法ID作为构造函数 你可能需要 jmethodID javaDefaultConstructor = env->GetMeth

我正在尝试将
int数组
JNI传递到Java
。当我传递
单个或多个
int
值时,
它起作用
但传递
数组
不起作用。每次应用程序崩溃并返回以下错误

错误 JNI JAVA 线路

jobject javaObjectRef = env->NewObject(javaClassRef, javaMethodRef);
这绝对是错误的。它尝试使用onDataReady()的方法ID作为构造函数

你可能需要

jmethodID javaDefaultConstructor = env->GetMethodID(javaClassRef, "<init>", "()V");
jobject javaObjectRef = env->NewObject(javaClassRef, javaDefaultConstructor);
jmethodidjavadefaultconstructor=env->GetMethodID(javaClassRef,“,”()V”);
jobject javaObjectRef=env->NewObject(javaClassRef,javaDefaultConstructor);

请注意,jmethodID不是一个引用:您可以在任何线程和您喜欢的任何实例上查找一次ID并使用它。它只是一个数字,至少在应用程序的生命周期内是常量。

很抱歉,我不明白您想说什么。onDataReady()绝对不是构造函数。GetMethodID中的方法名在哪里?你能解释一下这行吗?
表示构造函数。您可以使用javap找到适合您的类的确切的附魔。但是onDataReady()不是构造函数。我想调用一个特定的方法,而不是构造函数。我也可以毫无问题地调用一个不以数组作为参数的方法。也许区别在于你尝试的另一个方法是静态的?
public void onDataReady(int[] array,int len){
}
jobject javaObjectRef = env->NewObject(javaClassRef, javaMethodRef);
jmethodID javaDefaultConstructor = env->GetMethodID(javaClassRef, "<init>", "()V");
jobject javaObjectRef = env->NewObject(javaClassRef, javaDefaultConstructor);