По какой-то причине одно и то же исключение также возникает при использовании JNI и передаче аргумента jclass вместо jobject при вызове Call*Method()
.
Это похоже на ответ от Ogre Psalm33.
void example(JNIEnv *env, jobject inJavaList) {
jclass class_List = env->FindClass("java/util/List");
jmethodID method_size = env->GetMethodID(class_List, "size", "()I");
long size = env->CallIntMethod(class_List, method_size); // should be passing 'inJavaList' instead of 'class_List'
std::cout << "LIST SIZE " << size << std::endl;
}
Я знаю, что немного поздно ответить на этот вопрос через 5 лет после того, как его спросили, но это один из лучших ударов при поиске java.lang.IncompatibleClassChangeError
, поэтому я хотел задокументировать этот специальный случай.