Я пытаюсь вызвать API для отдыха, используя JNI в C++. Он успешно звонит с первого раза. Однако когда я вызываю функцию несколько раз в цикле, который несколько раз создает среду JVM, происходит сбой при втором вызове. Ниже мой код:
R13=0x00007ffdf0ffdf70 is pointing into the stack for thread: 0x00000000020d8000
R14=0x0000000000000000 is an unknown value
R15=0x0000000000000000 is an unknown value
Stack: [0x00007ffdf0f01000,0x00007ffdf1001000], sp=0x00007ffdf0ffdcb0, free space=1011k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libJavaInterface.so+0x54d3] JNIEnv_::FindClass(char const*)+0x17
C [libJavaInterface.so+0x5230] invoke_class(JNIEnv_*, std::__cxx11::basic_string, std::map)+0x85
C [libJavaInterface.so+0x540c] CallExternalApi(std::__cxx11::basic_string, std::map
Подробнее здесь: [url]https://stackoverflow.com/questions/78487514/jni-c-program-crashes-when-call-made-to-rest-api-in-a-loop[/url]
Я пытаюсь вызвать API для отдыха, используя JNI в C++. Он успешно звонит с первого раза. Однако когда я вызываю функцию несколько раз в цикле, который несколько раз создает среду JVM, происходит сбой при втором вызове. Ниже мой код: [code]for (int i=0;iFindClass("ExternalInterface");
int CallExternalApi( string ApiId, map restApiArgs ) {
JNIEnv* env; if(env!=NULL) { env=create_vm(); } invoke_class( env , ApiId, restApiArgs ); return 0; } [/code] Сбой происходит в методе FindClass JNI. [code]R13=0x00007ffdf0ffdf70 is pointing into the stack for thread: 0x00000000020d8000 R14=0x0000000000000000 is an unknown value R15=0x0000000000000000 is an unknown value
Stack: [0x00007ffdf0f01000,0x00007ffdf1001000], sp=0x00007ffdf0ffdcb0, free space=1011k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libJavaInterface.so+0x54d3] JNIEnv_::FindClass(char const*)+0x17 C [libJavaInterface.so+0x5230] invoke_class(JNIEnv_*, std::__cxx11::basic_string, std::map)+0x85 C [libJavaInterface.so+0x540c] CallExternalApi(std::__cxx11::basic_string, std::map