我正在为 android 开发一个应用程序,它使用 JNI 代码进行一些 CPU 密集型计算。我在 java 上的一个本地方法将 ArrayList 作为参数传递给 JNI 层。
当我尝试使用 ArrayList 的 get(int index) 时:
jmethodID getAtIndex = env->GetMethodID(listClass, "get", "(I)Ljava/lang/Object");
我越来越:
NoSuchMethodError: no method with name='get' signature=
'(I)Ljava/lang/Object' in class Ljava/util/ArrayList;
但是,当我使用 javap -s java.util.ArrayList 获取该方法的签名时,我得到的签名与我在 JNI 代码中使用的签名完全相同。
有任何想法吗?提前致谢!!