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.It似乎完全正确。我在这里错过了什么?
public boolean addAll(Collection c)
答案 0 :(得分:1)
您始终可以使用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玩得开心!
答案 1 :(得分:0)
似乎是完全正确的。
不可理解。这是完全错误的。 API表示参数为Collection
。
不要猜测这些事情,也不要试图自己编写JNI方法的思路。使用javap -s
的输出。这绝不是错的。