Android JNI 问题 | NoSuchMethodErr

2019-04-22  本文已影响0人  WnniandaoYu

今天突然遇到NoSuchMethodError问题,被狠狠的折磨了一下,在此记录。

问题!

W/dalvikvm: JNI WARNING: JNI function GetObjectClass called with exception pendingin 
  ....MainActivity;.comList:(Ljava/util/ArrayList;)V (GetObjectClass)
Pending exception is:
  I/dalvikvm: java.lang.NoSuchMethodError: no method with name='get' signature=
  '(I)F' in class Ljava/util/ArrayList;
  at com.xwyd.dtstraining.dtsnative.MainActivity.compt(Native Method)

Android 代码

 具体就是创建一个List,然后添加点东西,最后传入native方法中进行使用。

void soList(){
  ArrayList<Float> listAx = new ArrayList<Float>();

  listAx.add(-0.01647f);
  listAx.add(-0.44549f);
  listAx.add(-0.74351f);
  listAx.add(-0.81942f);
  listAx.add(-0.84121f);

  comList(listAx);
}
 public native void comList(ArrayList<Float> xList);

CPP 代码

 Cpp里面获取get方法,然后执行一系列操作。本来想着能很顺利的执行下去,没想到在GetMethodID这里栽了,默默地用小拳拳锤了下胸口。

extern "C"
JNIEXPORT void JNICALL
..._comList(JNIEnv *env, jobject instance, jobject xList) 
{
  jclass ax_list_jclass = env->GetObjectClass(xList);
  // 获取 a X list 的 methodid
  jmethodID method;
  method = env->GetMethodID(ax_list_jclass, "get", "(I)F");
  ....
}

cooding 很美好,error 很残酷,run 起来,NoSuchMethodError 出现,滴滴,前方高能。
....
....
未解之谜!

上一篇下一篇

猜你喜欢

热点阅读