Найден java-метод JNI, но при его вызове возвращается значение null (при вызове Java из C ++) - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь вызвать следующий метод Java из C ++

public Moves moves(final Context context)

, который находится в открытом финальном классе с именем Game.Я использовал следующий код JNI из C ++, чтобы найти метод

jclass gameClass = env->FindClass("game/Game");
jmethodID moves_id = env->GetMethodID(gameClass,"moves","(Lutil/Context;)Lgame/rules/play/moves/Moves;");

, и проверил, что он может успешно найти идентификатор метода.Проблема заключается в том, что когда я вызываю метод, в следующем коде возвращается значение NULL (которое, как я предполагаю, указывает на ошибку).

jobject moves_obj = env->CallObjectMethod(game_object,moves_id, context_object);

, где game_object - это объект задания, представляющий объект Game иcontext_object - это объект задания, представляющий объект Context.Я новичок в JNI, и я еще не сталкивался с ситуацией, когда метод был найден, но была ошибка, связанная с вызовом этого метода.Есть ли хороший способ отладки этого?

EDIT:

Похоже, добавление

if(env->ExceptionCheck()){
    env->ExceptionDescribe();
}

может показать любые исключения, которые произошли в вызываемом коде Javaи в моем случае было исключение.Так что с кодом JNI проблем не было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...