我在使用 JNI 从 C++ 代码进行 java 调用时遇到问题。我能够获取作业,但在作业上调用任何 API 都会失败。在挖掘了将近一天并与其他工作 Java API(我在代码中调用的 jobjects)进行比较时,我发现了一个不同之处。
下面的一段代码
void printClassInfo(JNIEnv* env, jobject object, jclass klazz)
{
printf("printclass info 1\n");
printf("printclass info 2\n");
// First get the class object
jmethodID mid = env->GetMethodID(klazz, "getClass", "()Ljava/lang/Class;");
printf("printclass info 2.1\n");
jobject clsObj = env->CallObjectMethod(object, mid);
printf("printclass info 3\n");
if(clsObj == NULL){
printf("cls obj is null");
}
}
prints cls obj is null 对于我看到问题的作业。
对于其他作业,调用不返回 null。
主要区别在于它是一个新添加的类,我似乎错过了一些可能导致此问题的东西。我一次又一次地重新检查,但没有得到任何明确的指标。
任何帮助表示赞赏。