JNI Uncaught exception типа … как это происходит?

У меня есть код Java, который вызывает код C ++, а код C ++ поворачивается и вызывает Java, и все это через JNI. Мы получали пресловутый «hs_err_pidXXXX.log», который, как ни странно, происходил, когда мы вызывали JNIEnv _ :: GetMethodID (myJniEnv-> GetObjectClass (anException), «printStackTrace», «() V») о текущем ожидающем исключении! Итак, мы добавили:

if ((javaException = getJniEnv()->ExceptionOccurred()) != NULL)
{
   jniEnv->ExceptionDescribe();
   .... <other exception handling code> ...
}

... после каждого вызова JNI, чтобы попытаться выяснить, какое исключение произошло. Результат ExceptionDescribe () был:

Uncaught exception of type <unknown>

Как это происходит? Вышеупомянутое значение anException было получено прямо из JNI-вызова anException = myJniEnv-> ExceptionOccurred () , что должно привести к выбросу, верно? Думаю, я смогу напечатать трассировку стека на throwable без сбоев JNI. Кто-нибудь раньше сталкивался с подобным?

5
задан Ogre Psalm33 19 August 2011 в 21:04
поделиться