Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C到Java的JNI回调中出现崩溃_Java_Android_C_Callback_Java Native Interface - Fatal编程技术网

从C到Java的JNI回调中出现崩溃

从C到Java的JNI回调中出现崩溃,java,android,c,callback,java-native-interface,Java,Android,C,Callback,Java Native Interface,我正在使用一个第三方C本机库,它正在调用对我的JNI的回调 因此,在JNI的C部分中,我有一个回调函数callback(),我在初始化时将其注册到库中。这被库作为回调调用,没有问题 但是,一旦它进入函数callback(),当我试图在上层调用java函数时,我就会崩溃 下面是函数callback()片段: threadStatus = (*javaVM)->GetEnv(javaVM, (void **)&envCallBack, JNI_VERSION_1_6); __a

我正在使用一个第三方C本机库,它正在调用对我的JNI的回调

因此,在JNI的C部分中,我有一个回调函数
callback()
,我在初始化时将其注册到库中。这被库作为回调调用,没有问题

但是,一旦它进入函数
callback()
,当我试图在上层调用java函数时,我就会崩溃

下面是函数
callback()
片段:

threadStatus = (*javaVM)->GetEnv(javaVM, (void **)&envCallBack, JNI_VERSION_1_6);
    __android_log_print(ANDROID_LOG_VERBOSE,"threadStatus--------------- ", "%d",threadStatus); //threadStatus is -2 as I can see in logs

     if(threadStatus == JNI_EDETACHED)
     {

     res = (*javaVM)->AttachCurrentThread(javaVM,(void**)&envCallBack,NULL);
    __android_log_print(ANDROID_LOG_VERBOSE,"______________Getting JNI Env_________Race JNI", "%d",122333);

     if(res != JNI_OK)
             return;
     }
     else if (res == JNI_EVERSION) {
    __android_log_print(ANDROID_LOG_VERBOSE,"______________JNI Version Not Supported________Race JNI", "%d",122333);
        }
然后在这个函数的末尾我调用

__android_log_print(ANDROID_LOG_VERBOSE,"______________CallMethod_________Race JNI", "%d",callMethod);

    __android_log_print(ANDROID_LOG_VERBOSE,"______________Parameter 1_________Race JNI", "%d",eventDataValue);

    __android_log_print(ANDROID_LOG_VERBOSE,"______________Parameter 2_________Race JNI", "%d",obj_callbackData);
    (*envCallBack)->CallVoidMethod(envCallBack, callbackObject, callMethod);
我从哪里得到的碰撞。有人能告诉我我犯了什么错误吗?我连接的线正确吗

以下是日志:

V/threadStatus--------------- ( 2021): -2
V/______________Getting JNI Env_________Race JNI( 2021): 122333
V/_______________Method Called_________Race JNI( 2021): 200000
V/_______________Before Method Called RaceCallBack_________Race JNI( 2021): 200000
V/______________CallMethod_________Race JNI( 2021): 1115468904
V/______________Parameter 1_________Race JNI( 2021): 0
V/______________Parameter 2_________Race JNI( 2021): 1080861840
W/dalvikvm( 2021): JNI WARNING: JNI method called with exception raised
W/dalvikvm( 2021):              in Ldalvik/system/NativeStart;.run ()V (CallVoidMethod)
W/dalvikvm( 2021): Pending exception is:
I/dalvikvm( 2021): Ljava/lang/CloneNotSupportedException;: Class doesn't implement Cloneable
I/dalvikvm( 2021):  at java.lang.Object.clone(Object.java:155)
I/dalvikvm( 2021):  at dalvik.system.NativeStart.run(Native Method)
I/dalvikvm( 2021): "Thread-10" prio=5 tid=9 NATIVE
I/dalvikvm( 2021):   | group="main" sCount=0 dsCount=0 obj=0x406ca3b0 self=0x1f6040
I/dalvikvm( 2021):   | sysTid=2057 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=2214832
I/dalvikvm( 2021):   | schedstat=( 1783000 11852000 9 )
I/dalvikvm( 2021):   at dalvik.system.NativeStart.run(Native Method)

您有一个挂起的
CloneNotSupportedException
。这可能就是你应该开始调查的地方。@Michael:我确实看到了,但我无法找出导致异常的原因?你有一个待处理的
CloneNotSupportedException
。这可能就是你应该开始调查的地方。@Michael:我确实看到了,但我无法找出原因,因为是什么导致了这个异常?