jclass class= env->FindClass("java/util/ArrayList");

listClass = (jclass)env->NewGlobalRef(class);

listAddAllID = env->GetMethodID(listClass, "addAll", "(Ljava/lang/Object;)Z");


对于上面的代码“ java.lang.NoSuchMethodError:addAll”,我得到以下异常。我使用“ lang / object”作为参数,使用“ z”作为返回类型boolean。这似乎完全正确。我在这里缺少什么?


  公共布尔addAll(Collection c)

最佳答案

您始终可以使用javap获取方法的正确描述符

> javap -s java.util.ArrayList | grep -A +1 addAll
  public boolean addAll(java.util.Collection<? extends E>);
    descriptor: (Ljava/util/Collection;)Z
--
  public boolean addAll(int, java.util.Collection<? extends E>);
    descriptor: (ILjava/util/Collection;)Z


因此,您需要将其更改为其中之一(取决于您要拨打的电话)。

玩JNI!

10-08 16:00