我正在将一个Java库打包为JAR文件,在尝试调用其中的方法时,会抛出很多java.lang.IncompatibleClassChangeError
错误,这些错误似乎是随机出现的。可能会出现哪些问题导致这个错误?
我正在将一个Java库打包为JAR文件,在尝试调用其中的方法时,会抛出很多java.lang.IncompatibleClassChangeError
错误,这些错误似乎是随机出现的。可能会出现哪些问题导致这个错误?
由于某种原因,使用JNI并在调用Call*Method()
时传递jclass参数而非jobject时,也会抛出相同的异常。
这与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
时,这是最热门的搜索结果之一,所以我想记录一下这个特殊情况。